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