keys filtrar example con array_filter array php scope array-filter

filtrar - php map array keys



Usar variable externa en array_filter (3)

La variable $id no está en el alcance de la función. Debe usar la cláusula de use para hacer accesibles las variables externas:

$foo = array_filter($bar, function($obj) use ($id) { if (isset($obj->foo)) { var_dump($id); if ($obj->foo == $id) return true; } return false; });

Tengo una matriz, que quiero filtrar por una variable externa. La situación es la siguiente:

$id = ''1''; var_dump($id); $foo = array_filter($bar, function($obj){ if (isset($obj->foo)) { var_dump($id); if ($obj->foo == $id) return true; } return false; });

El primer var_dump devuelve el ID (que se establece dinámicamente por supuesto), sin embargo, el segundo var_dump devuelve NULL.

¿Alguien puede decirme por qué, y cómo resolverlo?


Porque su función de cierre no puede ver $id . Necesita la palabra clave de use :

$foo = array_filter($bar, function($obj) use ($id) {


Tema de alcance variable!

Una solución simple sería:

$id = ''1''; var_dump($id); $foo = array_filter($bar, function($obj){ global $id; if (isset($obj->foo)) { var_dump($id); if ($obj->foo == $id) return true; } return false; });

o, desde PHP 5.3

$id = ''1''; var_dump($id); $foo = array_filter($bar, function($obj) use ($id) { if (isset($obj->foo)) { var_dump($id); if ($obj->foo == $id) return true; } return false; });

Espero eso ayude