Verwenden Sie externe variable in array_filter
Ich habe ein array, welches ich filtern möchten, indem Sie eine externe variable.
Die situation ist wie folgt:
$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;
});
Den ersten var_dump
gibt die ID (die ist dynamisch gesetzt, natürlich), aber der zweite var_dump
NULL zurück.
Kann mir jemand sagen warum, und wie es zu lösen?
- was ist $bar-und was ist der Wert von $bar
$bar
normalerweise ist ein array- Wir können sagen, es ist auf jeden Fall ein array, weil es nicht werfen einen PHP-Fehler. Es kann nicht immer auf jeden Fall ein array, je nach code, aber es ist auf jeden Fall ein array, in das use-case, wo er bekommt den beschriebenen Fehler im OP
- Sorry, es ist ja ein array mit den ID ' s.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die variable
$id
ist nicht im Gültigkeitsbereich der Funktion. Sie müssen verwenden Sie dieuse
- Klausel, um externe Variablen zugegriffen werden:use
modifier.Geltungsbereich von Variablen-Problem!
Einfache Lösung wäre :
oder seit PHP 5.3
Hoffe es hilft
create_function()
Funktion, zusammen mit derglobal
Erklärung.Weil Ihr Verschluss-Funktion nicht sehen kann
$id
. Sie müssen dieuse
Stichwort: