使用Lambda 函數存取外部變數
在PHP 中,可以在lambda 函數中存取外部靈活性,為資料處理提供了外部靈活性。然而,理解變數捕獲的細微差別至關重要。
考慮程式碼片段:
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 });
此程式碼允許我們使用提供的函數來處理資料庫行。但是,如果我們需要聚合多行數據,我們可以在 lambda 函數中使用 use 關鍵字。
$result = ''; fetch("SELECT title FROM tbl", function($r) use (&$result) { $result .= $r['title']; }); echo $result;
透過加入 use (&$result),我們告訴 lambda 函數使用外部$result 變數並透過引用 (&) 傳遞它。這使我們能夠將每一行的值連接到一個變數中。
需要注意的是,lambda 函數使用早期綁定,在定義函數時而不是呼叫函數時捕獲外部變數的值。當外部變數在宣告和呼叫之間更改值時,這可能會導致意外行為。
以上是PHP中的Lambda函數如何存取和修改外部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!