[英]Laravel eloquent chunk does not work
我在laravel-5.4應用程序中嘗試了以下內容來使用chunk
:
$out = [];
\App\User::chunk(5,function($users) use($out){
foreach($users as $user){
//$out[] = $user;
$out[] = $user->id;
}
});
dd($out);
但是, dd($out)
的輸出仍為空數組。 這有什么問題? $out
在全球范圍內!
數組是寫入時的副本。 當您嘗試寫入要從父作用域導入的數組時,您只是在該作用域中創建一個新數組。
您需要使用對數組的引用。
function ($users) use (&$out) { ... }
請參閱,在PHP中use
不只是從函數中的外部作用域中創建變量(類似於JS中的詞法作用域等)。 它復制了該變量的值( 這里有更多解釋 ,由於某些原因在官方文檔中仍然缺失)。
以use
為平均傳遞函數里面的一些值,而實際上使之成為正式的參數,函數的簽名的一部分。
底線是,你應該傳遞數組作為參考:
\App\User::chunk(5,function($users) use(&$out){
foreach($users as $user){
//$out[] = $user;
$out[] = $user->id;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.