2012-02-20 13 views
13

Aquí está mi gama ouput¿Cómo puedo verificar si el valor de la matriz está vacío?

Array 
(
    [1] => 1 
    [2] => 2 
    [3] => 
) 

¿Cómo sé que el [3] => está vacía?

foreach ($array as $key => $value) { 
    if (empty($value)) 
     echo "$key empty <br/>"; 
    else 
     echo "$key not empty <br/>"; 
} 

Mi señal que muestra todo no está vacía. ¿Cuál es la forma correcta de verificar está vacío?

+1

Tal vez porque el tercer elemento es un espacio en blanco '''', ¿entonces no es una cadena vacía? Si es así, intente cambiarlo en 'if (trim ($ value)! = '')' ... –

+3

Para evitar estos problemas, use var_dump() cuando imprima valores. Mostrará la longitud y no ocultará esos caracteres en blanco. –

Respuesta

12

Funciona como se esperaba, tercera es vacío

http://codepad.org/yBIVBHj0

Tal vez tratar de recortar su valor, en caso de que el tercer valor sería sólo un espacio.

foreach ($array as $key => $value) { 
    $value = trim($value); 
    if (empty($value)) 
     echo "$key empty <br/>"; 
    else 
     echo "$key not empty <br/>"; 
} 
+2

Codificando mejor que cantando .. Me encantó .. – floCoder

+0

@Nephil solo para dejarlo en claro, he tenido una foto de perfil con Selena Gomez :) –

4

Puede utilizar array_diff() y array_diff_key():

$array = array('one', 'two', ''); 
$emptyKeys = array_diff_key(array_diff($array,array()),$array); 

array_diff() extractos de todos los artículos que no son de la misma (por lo tanto, dejando de lado los espacios en blanco), array_diff_key da vuelta las diferencias a la matriz original.

+0

Esto no funciona ..php> print_r ($ array); matriz ( [0] => uno [1] => dos [2] => ) php> $ emptyKeys = array_diff_key (array_diff ($ array, array()), $ array); php> print_r ($ emptyKeys); Array ( ) – UberNeo

18

Una otra solución:

$array = array('one', 'two', ''); 

if(count(array_filter($array)) == count($array)) { 
    echo 'OK'; 
} else { 
    echo 'ERROR'; 
} 

http://codepad.org/zF9KkqKl

0

Prueba esto:

<?php 
    $data=array(
     'title' => 'Test Name Four', 
     'first_name' => '', 
     'last_name' => 'M', 
     'field_company' => 'ABC', 
     'email' => '', 
     'client_phone_number' => '', 
     'address_line_1' => '', 
     'address_line_2' => 'Address 3', 
     'address_line_3' => '', 
     'address_line_4' => '', 
     'post_code' => '', 
     ); 
    echo '<pre>'; 
    print_r($data); 
    foreach ($data as $key => $case) { 
     echo "$key => ".is_multiArrayEmpty($case)."<br>"; 
    } 
    function is_multiArrayEmpty($multiarray) { 
     if(is_array($multiarray) and !empty($multiarray)){ 
      $tmp = array_shift($multiarray); 
       if(!is_multiArrayEmpty($multiarray) or !is_multiArrayEmpty($tmp)){ 
        return false; 
       } 
       return true; 
     } 
     if(empty($multiarray)){ 
      return true; 
     } 
     return false; 
    } 
?> 
0

Aquí es una solución sencilla para comprobar una serie de valores clave vacíos y devolver la llave.

$a = array('string', '', 5); 

     echo array_search(null, $a); 
     // Echos 1 

Para verificar si la matriz contiene un valor de clave vacío. Prueba esto.

 $b = array('string','string','string','string','','string'); 

     if (in_array(null, $b)) { 
      echo 'We found a empty key value in your array!'; 
     } 
0

im utilizando en mi proyecto como este para el check esta matriz

datos del formulario im publicación como esta array('username' => 'john','surname' => 'sins');

public function checkArrayKeyExist($arr) { 
    foreach ($arr as $key => $value) { 
     if (!strlen($arr[$key])) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

agregar alguna explicación – HaveNoDisplayName

+0

im Agregue una cierta explicación – coyote34

2

Puede comprobar si hay una matriz vacía utilizando la siguiente:

if (!empty(array_filter($array))) { 
    echo 'OK'; 
} else { 
    echo 'EMPTY ARRAY'; 
} 
+0

¡Funcionó para mí! –

Cuestiones relacionadas