簡體   English   中英

Laravel雄辯的大塊不起作用

[英]Laravel eloquent chunk does not work

我在應用程序中嘗試了以下內容來使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM