如何在foreach循环中回显此JSON数据?

时间:2018-05-14 07:10:17

标签: php arrays laravel foreach

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

我的数据库电话:

$json = json_encode($data);

如果我将其返回视图

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

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

我得到htmlspecial chars错误。行

所以我用:

@foreach ($json as $obj)

@for each ($obj as $client)

....

@endforeach

@endforeach

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

{{1}}

如何预测此循环以获取内部的键值对?

我试图迭代循环两次,但没有运气

{{1}}

4 个答案:

答案 0 :(得分:0)

结构只有一层。

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

答案 1 :(得分:0)

你可以使用json decode

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
}

答案 2 :(得分:0)

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

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循环中。

答案 3 :(得分:0)

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

$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