【问题标题】:PHP (Laravel): Foreach Loop with Nested ArrayPHP(Laravel):带有嵌套数组的 Foreach 循环
【发布时间】:2021-06-19 00:33:11
【问题描述】:

我有一个具有这种层次结构的数组:

我需要在刀片视图中显示 JSON 文件中的内容。 我想使用 nameurlitem 中的信息来显示 类别。 “item”中的内容是我需要的,以便显示有关产品的其他信息。

如何打印这些结果?我尝试使用带有 Blade Syntax 的 foreach 循环,但我无法访问正确的结果(或所有结果)。 //非法字符串偏移'name'

到目前为止我的尝试:

@php
$path = storage_path() . "/app/public/data.json";
$json = json_decode(file_get_contents($path), true);
@endphp


@foreach ($json['collection'] as $content)
<p>Name {{ $content['name'] }}</p>
<p>Url {{ $content['url'] }}</p>
<p>Item {{ $content['item'] }}</p>
@endforeach

【问题讨论】:

  • 你在 $json['collection'] 中得到了什么?
  • 你不必循环'collection'部分,只需$json['collection']['name'], $json['collection']['url'],那么你可以循环通过 $json['collection']['item']

标签: php json laravel foreach


【解决方案1】:
  <p>Name {{ $json['collection']['name'] }}</p>
  <p>Url {{ $json['collection']['url'] }}</p>
  @foreach ($json['collection']['item'] as $data)
   <p> Format {{ $data['format'] }}</p>
   <p> Author {{ $data['author'] }}</p>
  @endforeach

请尝试上述解决方案。

您收到 Illegal string offset 'name' 以下错误的原因是因为它正在循环 JSON 集合。第一次循环时它找到了名称,但当它第二次循环时它指向的是 URL,而不是名称。

【讨论】:

  • 您忘记在 {{...}} 中添加嵌入 $data 内容,否则效果很好!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多