2010-11-23 20 views
15

Tengo una matriz asociativa con una pila completa de true/false valores.Eliminar claves con valores falsos de la matriz en PHP

Estoy tratando de eliminar todas las claves cuyos valores son false.

Así que si la matriz es

array(
    'key1' => true, 
    'key2' => false, 
    'key3' => false, 
    'key4' => true 
); 

Quiero terminar con

array(
    'key1' => true, 
    'key4' => true 
); 

¿Cómo voy a hacer esto?

Respuesta

28
$array = array_filter(array(
    'key1' => true, 
    'key2' => false, 
    'key3' => false, 
    'key4' => true 
)); 

array_filter()

+0

Un enlace al manual sería agradable http://www.php.net/manual/en/ref.array.php – Shikiryu

+1

Una generación de codificadores que hace referencia primero al manual sería bueno también –

1
for (x=0; x < array.count; x++) 
{ 
    if (key.value == false) 
    { 
      unset($arr[x]); 
    } 
} 

Sólo psuedocode, así que espero que usted sabe lo que quiero decir.

+0

Eso parece ser Java (o algo así), no PHP – KingCrunch

+0

No lo sabría. Como dije, está destinado a ser solo psuedocode. – Nick

+0

Oh, realmente: X Lo siento. – KingCrunch

0

Arraydecleration (usando PHP 5,4 array taquigrafía):

$arr = ['key1' => TRUE, 'key2' => FALSE, 'key3' => FALSE, 'key4' => TRUE]; 

Entonces quitar todas las claves y los valores de la matriz donde el valor == FALSE (utilizar opcionalmente comparación estricta "==="):

foreach ($arr as $key => $value) 
    if ($value == FALSE) 
     unset($arr[$key]); 

resultados de impresión:

print_r($arr); 

Esta última línea se imprime "array ([key1] => 1 [key4] => 1)".

+0

Un poco tarde en el tren, pero esto eliminará '" "', '0',' 0.0', 'null' y' [] 'también. Eso puede ser intencionado, pero no está claro. Veo la frase "opcionalmente use' === '", pero no es una opción, sino un comportamiento diferente y, por lo tanto, un resultado diferente. – KingCrunch

Cuestiones relacionadas