我从json文件中提取数据,我得到的结果没有问题,但我只得到1个结果。所以当我做一个foreach循环时,我没有得到任何结果。
json结果:
{
"channels": [
{
"position": 4,
"id": "901",
"name": "Away"
},
{
"position": 0,
"id": "900",
"name": "General"
},
{
"position": 1,
"id": "889",
"name": "HQ"
},
{
"position": 2,
"id": "888",
"name": "Base"
}
],
}
我可以回应一下:
echo $json_array['channels'][0]['position'];
echo $json_array['channels'][0]['id'];
echo $json_array['channels'][0]['name'];
但无论我尝试什么,我只得到1个结果,我做一个foreach循环,它什么都不做
foreach($json_array as $item) {
echo $item['channels'][0]['position'];
echo $item['channels'][0]['id'];
echo $item['channels'][0]['name'];
}
我错过了什么吗?
答案 0 :(得分:5)
您只获得第一个对象的值。 $json_array['channels']
是一个对象数组,您需要遍历这些对象。这应该有效:
foreach($json_array['channels'] as $item) {
echo $item['position'];
echo $item['id'];
echo $item['name'];
}
为了清楚地理解,这就是它如何与for循环一起使用:
for($index = 0; $index < count($json_array['channels']); $index++) {
echo $json_array['channels'][$index]['position'];
echo $json_array['channels'][$index]['id'];
echo $json_array['channels'][$index]['name'];
}
答案 1 :(得分:3)
您缺少收集迭代
foreach($json_array['channels'] as $item) {
echo $item['position'];
echo $item['id'];
echo $item['name'];
}
答案 2 :(得分:3)
使用initStripeHandler();
,您现在可以按变量foreach
$item
答案 3 :(得分:2)
你告诉你的php你想在你的json文件中转到[&#39; channels&#39;]然后取第一个位置[0]。所以你要循环并且它会继续在第0位击中它。所以你可以做到,正如其他人所说:
foreach($json_array['channels'] as $item) {
echo $item['position'];
echo $item['id'];
echo $item['name'];
}
但为了让你更清楚,这是另一个有效的例子:
$json = json_decode($json_string)
for($i = 0; $i < count($json['channels']) ; $i++)
{
echo $json['channels'][$i]['position'];
echo $json['channels'][$i]['id'];
echo $json['channels'][$i]['name'];
}