PHP获取Clash Royale API数据后,如何输出JSON指定字段?
问题分析与解决方法
核心问题出在数据类型不匹配上:你在控制器里使用了json_decode($res, true),第二个参数true会把返回的JSON解析成关联数组,但你在视图里却用了对象的->语法来访问属性,这就导致无法正确获取字段。
正确的访问方式(关联数组语法)
因为你已经把JSON转成了关联数组,所以必须用数组索引[]来访问各个层级的字段:
- 获取第一张卡片的名称:
{{ $data['items'][0]['name'] }} - 获取第一张卡片的图标地址:
{{ $data['items'][0]['iconUrls']['medium'] }}
遍历所有卡片的示例
如果要展示所有卡片数据,可以在视图里用@foreach循环遍历数组:
@foreach($data['items'] as $card) <div class="card-item"> <h4>{{ $card['name'] }}</h4> <p>卡片ID: {{ $card['id'] }}</p> <p>最高等级: {{ $card['maxLevel'] }}</p> <img src="{{ $card['iconUrls']['medium'] }}" alt="{{ $card['name'] }} 图标"> </div> @endforeach
可选方案:改用对象语法
如果你更习惯用->访问属性,可以修改控制器里的json_decode调用,去掉第二个参数(或者设为false),这样会把JSON解析成对象:
// 修改这一行 $data = json_decode($res); // 去掉true参数,默认返回对象
此时视图里就可以用对象语法访问:
{{ $data->items[0]->name }} {{ $data->items[0]->iconUrls->medium }}
两种方式二选一即可,只要保持数据类型和访问语法一致就没问题。
内容的提问来源于stack exchange,提问作者Antarax
相关产品推荐
相关产品推荐

