2016-08-13 60 views
0

控制器:遍歷JSON陣列中PHP laravel

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class welcomeController extends Controller 
{ 
    public function welcome() { 
     $cards = json_decode('[{ 
      "id": 1, 
      "name ": "a", 
      "class": "class1" 
     }, { 
      "id": 2, 
      "name ": "b", 
      "class": "class2" 
     }]'); 

     return view('welcome', compact('cards')); 
    } 
} 

welcome.blade.php上瀏覽器

@foreach($cards as $card) 
    <p>{{ $card->name }} </p> 
    <p>{{ $card->class }} </p> 
@endforeach 

錯誤消息 enter image description here

我PHP larav新增功能埃爾。請幫我找到適當的解決辦法。謝謝。

回答

1

你好,你在你的代碼,一切就OK了問題是在JSON變量 $卡= json_decode('[{ 「ID」:1, 「名 「: 」一「, 」類「:」 class1「 },{ 」id「:2, 」name「:」b「, 」class「:」class2「 }]');

鍵「名」有一定的空間內使鑑於你特林訪問爲「名」,這就是爲什麼錯誤來了

+0

偉大的觀察,非常感謝。這工作。 – Kartik

0

從您的屏幕截圖中,發送到模板的'cards'值是一個數組的數組,而不是您的代碼段生成的一組對象。

json_decode()的第二個參數是是否轉換爲關聯數組,默認爲不是。

+0

我也曾嘗試TRUE;作爲第二個參數'json_decode()' 。但是,我不希望如此。 – Kartik

+0

從外觀看,截圖是當你傳入true時,代碼沒有。從我所知道的情況來看,代碼應該像描述中給出的一樣工作! – jedifans

1

嘗試

return view('welcome')->with("cards",$cards); 
+0

雖然此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要使用解釋性註釋來擠佔代碼,因爲這會降低代碼和解釋的可讀性! – FrankerZ

+0

樂施會我會remmeber,並感謝您的意見@FrankerZ –

0

的錯誤發生,因爲您的JSON數組是多維的,和你的welcome.blade.php呼籲名稱和類的不以陣列的那個水平存在變數。

在你welcome.blade.php,改變你的foreach說:

@foreach($cards[0] as $card) 
    <p>{{ $card->name }} </p> 
    <p>{{ $card->class }} </p> 
@endforeach 

我認爲,應該讓你回到正軌。希望有所幫助!

+0

當我使用 '@foreach($卡作爲$卡)

{{$卡 - > ID}}

@ endforeach' 它給了我下面上述結果: '1 2' 所以這意味着它循環兩次,但沒有得到值。 – Kartik