【问题标题】:How do I echo this JSON data in a foreach loop?如何在 foreach 循环中回显此 JSON 数据?
【发布时间】:2018-05-14 07:10:17
【问题描述】:

我正在使用 Laravel 调用 MySQL 中的存储过程。我正在尝试迭代返回的数据,但我似乎无法弄清楚。我要么得到一个无效的参数 foreach 错误,要么 html specialchars 错误我在将 JSON 发送到视图之前没有对其进行编码

我的数据库调用:

$data = DB::select('CALL sp_MyClientList()');

如果我把它返回到视图中

return view('my-view.index', compact('data'));

我收到 htmlspecial chars 错误。好的

所以我使用:

$json = json_encode($data);

我收到此 JSON 格式并将其发送到视图:

return view('my-view.index', compact('json'));

[  {  
"ClientID":24,
"Name":"Client1",
"Balance1":null,
"Balance2":null
},
{  
"ClientID":25,
"Name":"Client2",
"Balance1":24,
"Balance2":0
}]

我怎样才能foreach这个循环来获取里面的键值对?

我尝试迭代循环两次,但没有成功

@foreach ($json as $obj)

@for each ($obj as $client)

....

@endforeach

@endforeach

【问题讨论】:

    标签: php arrays laravel foreach


    【解决方案1】:

    结构只有一层。

    @foreach($json as $v)
        {{ $v-> ClientID }} - {{ $v->Name }}
    @endforeach
    

    【讨论】:

    • foreach 参数无效!
    【解决方案2】:

    你可以使用json解码

    foreach (json_decode($json) as $a)
    {
      print_r($a); // this is your area from json response
    }
    

    foreach ($json as $a)
    {
      print_r($a); // this is your area from json response
    }
    

    【讨论】:

      【解决方案3】:

      在您的控制器中,您可以创建一个函数来获取数据并将其解码为这样的数组:

      public function retrievingData($yourVariableHere){
          $data='[  {
          "ClientID":24,
      "Name":"Client1",
      "Balance1":null,
      "Balance2":null
      },
      {
          "ClientID":25,
      "Name":"Client2",
      "Balance1":24,
      "Balance2":0
      }]';
      
          $data=json_decode($data,true);
          return view('myViewFile',[
              'data' => $data
          ]);   
      }
      

      为了这个例子,我硬编码你的 json 只是为了使用你提供的数据。

      在您的函数中,您将解码后的数组返回给刀片,您可以像这样回显您的结果:

      @foreach ($data as $row)
          Client Id: {{$row->ClientID}}<br>
          Name : {{$row->Name}}<br>
          Balance1 data: {{$row->Balance1}}<br>
          Balance2 data: {{$row->Balance2}}<br>
      @endforeach
      

      在 foreach 循环中。

      【讨论】:

        【解决方案4】:

        以防有人需要这个问题的答案。我不知道这是否正确,但它确实对我有用。我必须编码然后解码我从服务器返回的结果,然后访问数组。

        $data = DB::select('CALL sp_myproc');
        
        $json = js_encode($data, true);
        $arr = js_decode($data, true);
        
         return view('myview.index', compact('arr'));
        
        @foreach ($arr as $client)
        
        {{$client['Name'}}
        
        @endforeach
        

        【讨论】:

          猜你喜欢
          • 2017-01-13
          • 1970-01-01
          • 2018-04-05
          • 2018-07-04
          • 2013-08-19
          • 2016-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多