2015-01-04 122 views
0

我正在使用laravel循環通過從我的控制器中的api檢索數據,它一切正常,但由於某種原因在循環中,如果我var_dump數據我得到所有應該在那裏但在我的循環之外,當我將數據傳遞給我的視圖時,它不起作用。foreach循環只顯示循環外最後一項

我正在運行一個API請求,然後當我得到我的迴應我正在運行每個原始響應的輔助API請求。這裏是我遇到問題的代碼的一部分。

foreach(array_slice($nearbysearchresults->results, 0, 5) as $result) // slicing array to limit requests 
    { 
     $getplacedetails ="https://maps.googleapis.com/maps/api/place/details/json?placeid=". $result->place_id ."&key=XXXX"; 
     $placesearchresults = json_decode(file_get_contents($getplacedetails)); 

var_dump($placesearchresults); // shows all 5 results 

} 

var_dump($placesearchresults); // shows all 1 result (outside loop). 
+4

將'$ placesearchresults'更改爲'$ placesearchresults []'這是否對您有用? – Rizier123

+0

就是這樣! $ placesearchresults [] = json_decode(file_get_contents($ getplacedetails)); 非常感謝你!無法弄清楚爲什麼! – user1529597

+0

寫了一個答案,並解釋了一些更多的事情!希望它能幫助你,並且你明白我改變了什麼。 (順便說一句:你可以接受答案,最能幫助你,解決你的問題!(http://meta.stackexchange.com/q/5234) – Rizier123

回答

2

你必須改變:

$placesearchresults = json_decode(file_get_contents($getplacedetails)); 

到:

$placesearchresults[] = json_decode(file_get_contents($getplacedetails)); 

因爲在當前的代碼,你覆蓋的每一次$placesearchresults的價值,所以這也是爲什麼在年底循環(外部)你只有1個結果。因此,爲了使循環之外的每個值都滿足:$placesearchresults並將每個值與[]相加到數組中

此外您還可以閱讀:D請參閱'使用方括號語法創建/修改「:http://php.net/manual/en/language.types.array.php

還有一點報價出的是:

現有陣列可以通過明示地設定值進行修改。

這是通過給數組賦值,指定括號中的關鍵字來完成的。密鑰也可以省略,導致一對空括號([])。

$arr[key] = value; 
$arr[] = value; 
// key may be an integer or string 
// value may be any value of any type 

如果$ arr還不存在,將會被創建,所以這也是創建一個數組的另一種方式。然而,這種做法是令人沮喪的,因爲如果$ arr已經包含某個值(例如來自請求變量的字符串),那麼該值將保留在該位置,並且[]可能實際上代表字符串訪問運算符。通過直接分配來初始化變量總是更好。

+0

非常感謝你向我解釋:) – user1529597

+0

@ user1529597你'歡迎光臨!祝你有美好的一天:D – Rizier123