php - JSON循环未打印预期结果
问题描述
我有一个 JSON 数组,我试图循环并回显某些位。
可以在此处看到完整数组的片段 - https://pastebin.com/eCYcZWpV
这是我正在使用的代码:
$str = file_get_contents('tst.json');
$json = json_decode($str, true);
foreach($json['results'] as $item){
foreach($item['vehicle'] as $data){
echo $data['ownershipCondition'];
echo "<br>";
echo $data['registration'];
echo "<br>";
echo $data['vin'];
echo "<br>";
echo $data['make'];
echo "<br>";
echo $data['model'];
echo "<br>";
echo "<br>";
}
}
这是预期的结果:
Used
ABC123
32847328474
Renault
Clio
Used
DEF123
48578435347589
Dacia
Sandeo
Clio
这就是我实际遇到的一大堆非法字符串偏移错误
U
U
U
U
U
U
H
H
H
H
H
H
V
V
V
V
V
V
R
R
R
R
R
R
C
C
C
C
C
C
解决方案
根据您的示例数据,$item['vehicle']
是一个对象,而不是一个数组。它只有一组数据。因此你不需要第二个foreach
。只需更直接地访问属性:
$str = file_get_contents('tst.json');
$json = json_decode($str, true);
foreach($json['results'] as $item){
echo $item['vehicle']['ownershipCondition'];
echo "<br>";
echo $item['vehicle']['registration'];
echo "<br>";
echo $item['vehicle']['vin'];
echo "<br>";
echo $item['vehicle']['make'];
echo "<br>";
echo $item['vehicle']['model'];
echo "<br>";
echo "<br>";
}
PS 如果您想知道,字符串偏移错误的原因是因为通过循环$item["vehicle"]
,您正在循环每个属性。因此,例如在第一个循环中,它会找到“ownershipCondition”属性,并将其值放入$data
. 所以提供的第一个值$data
是“Used”,显然这是一个没有任何属性的字符串,例如“ownershipCondition”、“registration”等。
推荐阅读
- laravel - 我想在我的控制器中获取登录用户
- r - 使用 R 计算多元线性回归的对数似然
- scikit-learn - scikit-learn:涉及管道时 fit() 无法启用 sample_weight
- reactjs - 将 props 传递给具有本地状态、状态提升和 redux 的组件 - 推荐
- google-apps-script - 我想编写一个脚本来读取和记录特定行的值并将它们复制到新工作表
- sql-server - 隐藏/取消隐藏查询
- python - 我不知道为什么'if'语句是真的
- java - 如何在不访问其他活动的情况下将 arraylist 从活动发送到另一个活动
- sql - 为什么 JasperReports 忽略 $!P SQL-ingection?
- uml - UML用例图检查用户权限