使用 Laravel刀片模板循环 JSON 内容的正确方法


Correct way to loop JSON contents using Laravel blade templating?

将如下所示的 JSON 字符串传递给视图后。当我这样做时...

<p>{{ $sets }}</p>

我得到...

[{"name":"A"},{"name":"B"}, ... ,{"name":"Z"}]

但是,当我尝试...

@foreach ($sets as $set)
    <p>{{ $set->name }}</p>
@endforeach

我收到错误"为 foreach()提供的参数无效"。

我很确定这是一个简单的问题,尽管我不确定出了什么问题。

您是否使用 Json_Decode 来创建 $sets 变量?

尝试这样的事情以确保没有解析错误,发生:

    $sets = json_decode($data);
    switch (json_last_error()) {
        case JSON_ERROR_DEPTH:
            $json_error = 'Maximum stack depth exceeded';
            break;
        case JSON_ERROR_STATE_MISMATCH:
            $json_error =  'Underflow or the modes mismatch';
            break;
        case JSON_ERROR_CTRL_CHAR:
            $json_error =  'Unexpected control character found';
            break;
        case JSON_ERROR_SYNTAX:
            $json_error =  'Syntax error, malformed JSON';
            break;
        case JSON_ERROR_UTF8:
            $json_error =  'Malformed UTF-8 characters, possibly incorrectly encoded';
            break;
    }

之后,尝试添加一个Var_dump($set)以查看每个项目是对象还是数组。您描述的方式只有在它是对象时才有效。

 @foreach ($sets as $set)
   <?php var)dump($set); ?>
 @endforeach