首页 > 解决方案 > 计算嵌套数组中的元素数量

问题描述

在 for 循环中,我试图计算从 JSON 提要解码的嵌套数组中的航班数量。不幸的是,当有更多航班可用时,它只显示 2 个航班。我究竟做错了什么?

来自端点的 Json 提要示例

{
  "response": [
    {
      "flight": {
        "number": "6204",
        "iata_number": "HV6204",
        "icao_number": "TRA6204"
      }
    },
    {
      "flight": {
        "number": "7012",
        "iata_number": "TB7012",
        "icao_number": "JAF7012"
      }
    },
    {
      "flight": {
        "number": "6652",
        "iata_number": "HV6652",
        "icao_number": "TRA6652"
      }
    },
    {
      "flight": {
        "number": "1925",
        "iata_number": "W61925",
        "icao_number": "WZZ1925"
      }
    },
    {
      "flight": {
        "number": "5075",
        "iata_number": "W65075",
        "icao_number": "WZZ5075"
      }
    },
    {
      "flight": {
        "number": "4289",
        "iata_number": "W64289",
        "icao_number": "WZZ4289"
      }
    },
    {
      "flight": {
        "number": "7861",
        "iata_number": "W67861",
        "icao_number": "WZZ7861"
      }
    },
    {
      "flight": {
        "number": "3066",
        "iata_number": "FR3066",
        "icao_number": "RYR3066"
      }
    }
  ]
} .    

PHP 代码示例

<?php    
$url = 'https://api.endpoint'; // path to JSON file
$data = file_get_contents($url); 
$flights = json_decode($data, true); 

for($i=0; $i<=count($flights['response'][0]['flight']['iata_number']); $i++) {
    echo "Flightnumber" . $flights['response'][$i]['flight']["iata_number"] . '<br/>';
}
?>

非常感谢任何帮助

标签: phparraysfor-loop

解决方案


这里真正应该使用的是foreach. foreach你不必关心你count()的数组:

$url = 'https://api.endpoint'; // path to JSON file
$data = file_get_contents($url); 
$flights = json_decode($data, true); 

foreach ($flights['response'] as $item) {
    echo $item['flight']['iata_number'] . '<br />';
}

简单的演示在这里

如果您仍想使用for-loop,它应该如下所示:

for ($i = 0; $i < count($flights['response']); $i++) {
    echo $flights['response'][$i]['flight']['iata_number'] . '<br />';
}

推荐阅读