我需要使用API中的数据。
我创建一个函数:
public function getItems()
{
$client = new \GuzzleHttp\Client();
$res = $client->get('https://app.example.com/api/getItems');
$vouchers = json_decode($res->getBody(), true);
dd($vouchers);
return view('api', compact('vouchers'));
}
和dd($vouchers)
返回我:
现在,当我尝试将$ vouchers数组与刀片引擎一起使用时:
<body>
@foreach ($vouchers as $v)
<p>{{$v->name}}</p>
@endforeach
</body>
我遇到错误:
"Trying to get property 'name' of non-object (View: .... etc...
如何将数组转换为雄辩的集合。 我使用最新的Laravel 5.7版本
答案 0 :(得分:2)
实际上您的$vouchers
是一个数组数组,
因此,您可能希望将子数组转换为对象:
您可以简单地使用:
foreach ($vouchers['vouchers'] as $key => $value) {
$vouchers['vouchers'][$key] = (object) $value;
}
..或使用集合:
$vouchers = collect($vouchers['vouchers'])->map(function ($voucher) {
return (object) $voucher;
});
答案 1 :(得分:1)
这是因为数组具有索引。 您可以执行以下操作:
@for ($i = 0; $i < count($vouchers); $i++)
<p>{{$vouchers[$i]->name}}</p>
@endfor
更新
如果它们每个都包含另一个数组,则可以尝试以下方法:
@for ($i = 0; $i < count($vouchers); $i++)
<p>{{$vouchers[$i][0]->name}}</p>
@endfor