foreach循环返回零结果

时间:2018-02-13 15:59:02

标签: php

我从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'];

 }

我错过了什么吗?

4 个答案:

答案 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

Doc:http://php.net/manual/en/control-structures.foreach.php

答案 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'];
}