filtrar example con array_filter array php arrays

example - php array_filter sin preservación de clave



php array key value (2)

Puede usar array_values después de filtrar para obtener los valores.

si filtro una matriz con array_filter para eliminar los valores nulos, las claves se conservan y esto genera "agujeros" en la matriz. P.ej:

The filtered version of [0] => ''foo'' [1] => null [2] => ''bar'' is [0] => ''foo'' [2] => ''bar''

Cómo puedo obtener, en cambio

[0] => ''foo'' [1] => ''bar''

?


Usando esta entrada:

$array=[''foo'',NULL,''bar'',0,false,null,''0'',''''];

Hay algunas maneras de hacerlo. Demo

Está un poco fuera del tema array_filter el comportamiento predeterminado codicioso de array_filter , pero si está buscando en Google a esta página, esta es probablemente información importante relevante para su proyecto / tarea:

var_export(array_values(array_filter($array))); // NOT GOOD!!!!!

Mala salida:

array ( 0 => ''foo'', 1 => ''bar'', )

Ahora por las formas en que funcionará:

Método n. ° 1 : ( array_values() , array_filter() w / !is_null() )

var_export(array_values(array_filter($array,function($v){return !is_null($v);}))); // good

Método n. ° 2 : ( foreach() , matriz !==null )

foreach($array as $v){ if($v!==null){$result[]=$v;} } var_export($result); // good

Método n. ° 3 : ( array_walk() , auto-index array array_walk() !is_null() )

array_walk($array,function($v)use(&$filtered){if(!is_null($v)){$filtered[]=$v;}}); var_export($filtered); // good

Los tres métodos proporcionan el siguiente resultado "nulo":

array ( 0 => ''foo'', 1 => ''bar'', 2 => 0, 3 => false, 4 => ''0'', 5 => '''', )