Verwenden von Lambda-Funktionen für den Zugriff auf externe Variablen
In PHP ist es möglich, innerhalb von Lambda-Funktionen auf externe Variablen zuzugreifen, was für Flexibilität bei der Datenverarbeitung sorgt . Es ist jedoch von entscheidender Bedeutung, die Nuancen der Variablenerfassung zu verstehen.
Bedenken Sie den Codeausschnitt:
function fetch($query, $func) { $query = mysql_query($query); while($r = mysql_fetch_assoc($query)) { $func($r); } } fetch("SELECT title FROM tbl", function($r){ //> $r['title'] contains the title });
Mit diesem Code können wir Datenbankzeilen mithilfe einer bereitgestellten Funktion verarbeiten. Wenn wir jedoch Daten aus mehreren Zeilen aggregieren müssen, können wir das Schlüsselwort use innerhalb der Lambda-Funktion verwenden.
$result = ''; fetch("SELECT title FROM tbl", function($r) use (&$result) { $result .= $r['title']; }); echo $result;
Durch das Hinzufügen von use (&$result) weisen wir die Lambda-Funktion an, das externe Schlüsselwort zu verwenden $result-Variable und übergeben Sie sie als Referenz (&). Dadurch können wir Werte aus jeder Zeile in einer einzigen Variablen verketten.
Es ist wichtig zu beachten, dass Lambda-Funktionen eine frühe Bindung verwenden und den Wert externer Variablen erfassen, wenn die Funktion definiert wird, nicht wenn sie aufgerufen wird. Dies kann zu unerwartetem Verhalten führen, wenn die externe Variable zwischen Deklaration und Aufruf ihren Wert ändert.
Das obige ist der detaillierte Inhalt vonWie können Lambda-Funktionen in PHP auf externe Variablen zugreifen und diese ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!