2017-04-04 111 views
1

我有問題將值從回調分配給變量。將回調值賦給變量?

下面的示例代碼,該工作沒有任何問題。它將顯示在瀏覽器上。

Service::connect($account)->exec(['something'], function ($line) { 
    echo $line . PHP_EOL; 
}); 

但是,我想分配給變量的JSON響應。

這不起作用:

$outout = null; 

Service::connect($account)->exec(['something'], function ($line) use ($outout) { 
     $outout = $outout . = $line; 
); 

echo $outout; 

$outout仍然是空。

我做錯了什麼?

+0

可能重複[在PHP關閉使用關鍵字傳遞引用?](http://stackoverflow.com/questions/10869572/does-the-use-keyword-in-php-closures-pass -by-reference) – miken32

回答

2

通過$outout作爲reference如果你想它改變你的功能範圍之外。你可以在你的函數調用中加入&

$outout = ''; 
Service::connect($account)->exec(['something'], function ($line) use (&$outout) { 
     $outout = $outout . = $line; 
); 
+0

是的,那是從父範圍繼承一個變量,而不是相反。在這裏尋找一個參考http://php.net/manual/en/functions.anonymous.php – daker

1

你需要通過它作爲參考來改變它的值。在您的變量use聲明之前使用&

$outout = null; 

Service::connect($account)->exec(['something'], function ($line) use (&$outout) { 
     $outout = $outout . = $line; 
); 

echo $outout;