【问题标题】:Loop through JSON array in PHP laravel在 PHP laravel 中循环遍历 JSON 数组
【发布时间】:2016-08-13 08:56:46
【问题描述】:

控制器:

<?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 的新手。请帮我找到合适的解决方案。谢谢。

【问题讨论】:

    标签: php json foreach laravel-5


    【解决方案1】:

    您好,您的代码一切正常问题出在 json 变量中

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

    键“name”内部有一些空间,因此在视图中您正试图以“name”访问,这就是错误出现的原因

    【讨论】:

      【解决方案2】:

      试试

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

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性 cmets 挤满你的代码,因为这会降低代码和解释的可读性!
      • 哦,我会记住的,感谢@FrankerZ的建议
      【解决方案3】:

      从您的屏幕截图中,发送到模板的“卡片”值是数组数组,而不是您的代码 sn-p 将生成的对象数组。

      json_decode()的第二个参数是是否转换为关联数组,默认为不转换。

      【讨论】:

      • 我还尝试将true 作为json_decode() 的第二个参数。但没有按照我的意愿进行。
      • 从外观上看,截图是你传入true的时候,代码是没有的。据我所知,代码应该按照描述中给出的那样工作!
      【解决方案4】:

      发生错误是因为您的 json 数组是多维的,并且您的welcome.blade.php 正在调用该数组级别中不存在的名称和类变量。

      在您的welcome.blade.php 中,将您的foreach 更改为:

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

      我相信这应该会让你重回正轨。希望对您有所帮助!

      【讨论】:

      • 当我使用 @foreach($cards as $card) &lt;p&gt;{{ $card-&gt;id }} &lt;/p&gt; @endforeach 它给了我下面提到的结果:1 2 这意味着它循环了两次但没有得到值。
      猜你喜欢
      • 2011-06-11
      • 2013-02-06
      • 1970-01-01
      • 2013-02-12
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      相关资源
      最近更新 更多