簡體   English   中英

在PHP Laravel中循環遍歷JSON數組

[英]Loop through JSON array in 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

瀏覽器上的錯誤消息 在此處輸入圖片說明

我是PHP laravel的新手。 請幫助我找到合適的解決方案。謝謝。

嘗試

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

您好,您的代碼中一切正常,問題出在json變量中

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

鍵“名稱”內部有一些空間,因此鑒於您正試圖以“名稱”訪問,這就是錯誤即將來臨的原因

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

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

發生錯誤是因為您的json數組是多維的,而您的welcome.blade.php正在調用在該數組級別上不存在的name和class變量。

在您的welcome.blade.php中,將您的foreach更改為:

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

我相信那會讓您重回正軌。 希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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