2011-06-14 25 views
12

tengo una matriz¿Cómo verifico si todas las claves de una matriz tienen valores vacíos en PHP?

$array = array('key1' => null, 'key2' => null, 'key3' => null, 'key4' => null); 

me gustaría para determinar si todas las claves del array tienen valores vacíos si es así, devuelve falso. el ejemplo anterior debería devolver falso ya que no tiene ningún valor. pero si una o más claves tienen algún valor, entonces debería volver verdadero; por ejemplo, el ejemplo siguiente es verdadero.

$array = array('key1', 'key2' => value2, 'key3', 'key4' => value4); 
+1

Todas las teclas tienen los valores, las llaves simplemente no son lo que usted piensa que son. Array ' ( [0] => key1 [1] => key2 [2] => key3 [3] => key4 )' y 'Matriz ( [0] => key1 [key2 ] => valor2 [1] => clave3 [clave4] => valor4 ) 'respectivamente. – Quentin

+0

lo siento, lo sabía, y me faltaba el punto :) –

Respuesta

39

Suponiendo que realmente quiere decir una matriz como

array('key1' => null, 'key2' => null, 'key3' => null, 'key4' => null) 

la la respuesta es simplemente

if (!array_filter($array)) { 
    // all values are empty (where "empty" means == false) 
} 
+0

sí, esto es exactamente lo que quise decir :). y estaba buscando esto. gracias –

4

Suposición es incorrecta. array('key1', 'key2', 'key3', 'key4') tiene 4 valores y claves en el rango 0..3.

array('key1', 'key2' => value2, 'key3', 'key4' => value4) tiene el valor key1 (con llave 0), la clave key2, el valor key3 (con la clave 1) y la tecla key4.

+0

@Ibrahim: intente 'print_r ($ array)', entonces debería ver cómo se ve la matriz. blagovest es completamente correcto. – Fender

+0

aah sí, me faltaba el punto :) –

0
$flag = 0; 
foreach($array as $keys) 
{ 
     if(!isempty($keys)) { 
     $flag++; 
     } 
} 

if(flag > 0) 
{ 
    echo "Array not empty!"; 
} 
else { 
    echo "Array empty!"; 
} 

Debería funcionar.

+0

isempty() no es la sintaxis correcta para comprobar si las claves de la matriz tienen valores emoty. la sintaxis correcta es simplemente vacía(). :). aún gracias, entendí lo que trataste de explicar. –

+0

Mi error. : p No he tocado php en un momento. : D – Anonymous

2

@Blagovest es correcto acerca de la presentación incorrecta de su pregunta.

$allEmpty = true; 
foreach($array as $key => $val) { 
    if(isset($array[$key])) { 
     $allEmpty = false; 
     break; 
    } 
} 

// Do what you will with $allEmpty 
1

Creo que lo que quiere decir es comprobar si todas las claves son numéricos o si al menos uno es de cadena:

$ok = false; 
foreach(array_keys($array) as $key){ 
    if(is_string($key)){ 
     $ok=true; 
     break; 
    } 
} 

return $ok; 
0
$array = array('key1' => null, 'key2' => null, 'key3' => null, 'key4' => null); 

La respuesta es

$filterArray = array_filter($array); 

if(count($filterArray) == 0){ 
    return false; 
}else{ 
    return true; 
} 
Cuestiones relacionadas