2010-02-18 20 views
23

tengo una matriz normal como estaEliminar valores cero a partir de una matriz PHP

Array 
(
    [0] => 0 
    [1] => 150 
    [2] => 0 
    [3] => 100 
    [4] => 0 
    [5] => 100 
    [6] => 0 
    [7] => 100 
    [8] => 50 
    [9] => 100 
    [10] => 0 
    [11] => 100 
    [12] => 0 
    [13] => 100 
    [14] => 0 
    [15] => 100 
    [16] => 0 
    [17] => 100 
    [18] => 0 
    [19] => 100 
    [20] => 0 
    [21] => 100 
) 

necesito para eliminar todos los de 0 a esta matriz, es esto posible con una función de matriz PHP

Respuesta

66

array_filter hace eso. Si no proporciona una función de devolución de llamada, filtra todos los valores que sean iguales a (boolean conversion) falsos.

+0

solución de Niza. Supongo que mi respuesta sigue siendo útil para cualquier persona que tenga este problema, pero el valor para eliminar no es cero. –

+2

Se puede usar una devolución de llamada con array_filter() para cuando se necesite personalizar el filtrado. – salathe

6

Usted puede simplemente bucle a través de la matriz y desarmar los elementos que son iguales a 0

foreach($array as $array_key=>$array_item) 
{ 
    if($array[$array_key] == 0) 
    { 
    unset($array[$array_key]); 
    } 
} 
4

Primer método:

<?php 
    $array = array(0,100,0,150,0,200); 

    echo "<pre>"; 
    print_r($array); 
    echo "</pre>"; 

    foreach($array as $array_item){ 
      if($array_item==0){ 
       unset($array_item); 
     } 
     echo"<pre>"; 
     print_r($array_item); 
     echo"</pre>"; 
    } 
?> 

Segundo método: Usoarray_diff función

<?php 
    $array = array(0,100,0,150,0,200); 
    $remove = array(0); 
    $result = array_diff($array, $remove);       
    echo"<pre>"; 
    print_r($result); 
    echo"</pre>"; 
    ?> 
0

Si no se preocupan por preservar las correlaciones clave a datos, puede utilizar esta sola línea truco:

<?php 
$a = array(0, 150, 0, 100, 0, 100, 0, 100); 

$b = explode('][', trim(str_replace('[0]', '', '['.implode('][', $a).']'), '[]')); 

print_r($b); // Array ([0] => 150 [1] => 100 [2] => 100 [3] => 100) 
2

poco tarde, pero copiar & pegar:

$array = array_filter($array, function($a) { return ($a !== 0); }); 
Cuestiones relacionadas