Estoy teniendo enorme variedad. Su estructura es como este:

Yo tratando de comprobar simplemente si el array está vacío o no.

<table>
<tr>
<td><b>View my Reviews</b></td>
</tr>
<tr>
<td colspan=10>
<div></div>
</td>
</tr>
<?php
if (!empty($this->revArr)) {
foreach ($this->revArr as $review):
?>
<tr>
<td class="col1">
<?php echo ($review['name'] == '') ? 'a guest' : $review['name']; ?> <br/>on <span style="font-size:11px;"><?php echo date("M j, Y", strtotime($review['created_at'])); ?></span>
</td>
<td class="col2">                   
<span class="name"><a href="/hotelreview/<?php echo $review['hotelId']; ?>"><?php echo $review['Info']->Name; ?></a></span>
<br/>
<span class="address"><?php
echo $review['Info']->address1;
if ($review['Info']->address2 != '') {
echo ' ' . $review['Info']->address2;
}
if ($review['Info']->address3 != '') {
echo ' ' . $review['hotelInfo']->address3;
}
?></span>
<div style="margin-top:10px;">
<h4><b><?php echo ($review['title'] == '') ? 'A Review By' : $review['title']; ?></b></h4>
<p><?php
$detail = str_replace("\r", "\n", $review['detail']);
$detail = preg_replace("#\n+#", "\n", $detail);
echo str_replace("\n", "</p><p>", $detail);
?></p>
</div>
</td>
</tr>
<?php endforeach; ?>  
<tr>
<td colspan=10 style="text-align:right;">
<?php echo $pagination; ?>                
</td>
</tr>
<?php } {
?>
<tr style="text-align: center;">
<td>No Review Found !!</td>
</tr>
<?php }
?>
</table>

Donde estoy mal? Por qué por encima de todas las condiciones no están trabajando?

Necesita Ayuda.

Gracias.

  • Simplemente, usted puede comprobar si una matriz es vacío o no el uso de if(empty($arrayName)).
  • es la por encima de la de salida de print_r($this->revArr); ??
  • No era una pregunta similar ayer. El problema era en realidad la parte del código fue publicado en una función y la variable no se pasa o global. Debido a que la persona no había puesto suficiente código les tomó una hora para trabajar en lugar de encontrar una respuesta en cuestión de minutos. Por favor enviar más relevantes del código.
  • ok voy a modificar mi post. Por favor espere
  • Lo sentimos, el código adicional no ayuda. Donde se $this->revArr viene?
  • Su provenientes de la API
  • La API? Lo de la API? Donde es el código que establece que? ¿Dónde está el código que se muestra a correr? $this requiere el contexto. No estás mostrando que.
  • Me estoy haciendo una API de xml de petición que dar la matriz de la que he publicado en el código. Quiero comprobar simplemente si el array está vacío o que no contienen datos, a continuación, mostrar simplemente no se han encontrado datos de lo contrario, la lista de la funcionalidad. Pienso que esta información es suficiente a nadie a entender donde está el problema.
  • Si usted cree así. Buena suerte con eso.
  • Ok Gracias…pero por favor no downvote bcoz yo no cosa así que no hay nada malo con mi pregunta
  • permítanos continuar esta discusión en el chat
  • stackoverflow.com/questions/8068220/…

InformationsquelleAutor Sky | 2013-01-12

5 Comentarios

  1. 3

    Podría ser que simplemente se olvidó de la else? Por lo que veo este código será siempre la salida

    «No Se Han Encontrado Datos»

    incluso si los datos están presentes. Si los datos se presentan también debe de salida de los datos solicitados.

    //snippet
    <?php endforeach; ?>  
    <tr>
    <td colspan=10 style="text-align:right;">
    <?php echo $pagination; ?>                
    </td>
    </tr>
    <?php } else {//there should be an else here
    ?>
    <tr style="text-align: center;">
    <td>No Review Found !!</td>
    </tr>
    <?php }
    ?>
    </table>

    Son usted seguro de que su api devuelve nada en caso de no encontrar los datos? La mayoría de las veces una api devolverá False o un error array en caso de error, así que los ensayos para empty puede no ser apropiado.

    Buena Suerte.

  2. 0

    Que puede probar:

    if(is_array($this->revArr) && count($this->revArr)){
    //code for displaying array information
    }else{
    echo "No data found";
    }

    La count función devolverá true si la variable es una cadena, entonces usted necesita para comprobar que se trata de un conjunto de primera.

    • Yo lo intenté, pero no su trabajo
    • Lo de «no trabajo» significa? Es dejar que a través de matrices vacías, o es no dejar que a través de los poblados de las matrices?
    • su todavía va en else condición.
    • La $this->revArr no es un array, o que no contiene datos. No hay ninguna otra opción. Qué sucede cuando usted hace una var_dump justo antes de la if declaración?
    • var_dump imprime la matriz
    • Y ¿qué sucede cuando se agrega esta justo antes de la if declaración: echo gettype($this->revArr);
    • echo gettype($this->revArr) de salida que muestra una «matriz»

  3. 0

    A echar un Vistazo:
    vacío

    isset

    is_array

    • <?php function array_empty($mixed) { if (is_array($mixed)) { foreach ($mixed as $value) { if (!array_empty($value)) { return false; } } } elseif (!empty($mixed)) { return false; } return true; } ?>
  4. 0

    bien probar estos 2 pasos

    reset($array_name)
    key = key($array_name)

    va a devolver NULL si no hay ninguna clave de lo contrario, devuelve la primera clave

  5. 0

    Puede utilizar esta función para comprobar si el array está vacío. No hay ninguna otra manera fácil.

    //Checks if an array is empty by values recursively.
    //If check_all_elements is true, all the elements will be required to be not empty.
    function is_array_empty($array, $check_all_elements = false)
    {
    if (!is_array($array) || empty($array))
    return true;
    $elements = count($array);
    foreach ($array as $element)
    {
    if (empty($element) || (is_array($element) && is_array_empty($element, $check_all_elements)))
    {
    if ($check_all_elements)
    return true;
    else $elements--;
    }
    }
    return empty($elements);
    }

Dejar respuesta

Please enter your comment!
Please enter your name here