获取值并遍历外部json数组

时间:2019-09-05 02:34:59

标签: php json

我想通过PHP和Json建立国家数据库。我通过外部json获取数据:

{
    "ph": {
        "name": "Philippines",
        "color": "green"
    },

    "ch": {
        "name": "China",
        "color": "red"
    },

    "us": {
        "name": "USA",
        "color": "blue"
    }

}

我通过php访问它们:

$jsonfile = file_get_contents("mapdata.json");
$data = json_decode($jsonfile, true);

如果需要,我可以访问每个国家/地区的单个数据,例如:

echo $data['ph']['name'];

但是,只有当我在ph中知道$data['ph']时,该方法才有效。如果我将有100多个国家/地区,并且想创建一个显示其名称和颜色的for循环,该如何实现?

有点像:

foreach($data as $value){
    echo $value['something?']....
}

一吨!

1 个答案:

答案 0 :(得分:1)

正如@Kevin在注释中指出的那样,要显示数组中的name值,只需使用$value['name']。要仅显示ph国家/地区的值,您需要稍微修改foreach循环以获取每个条目的key以及value

foreach ($data as $key => $value) {
    if ($key == 'ph') {
         echo $value['name'] . ': ' . $value['color'];
    }
}

输出:

Phillipines: green

正如@misorude所指出的,如果只想访问一个特定国家的值,则使用array_key_exists来查看数组中是否存在该国家的值,然后直接访问它们会更有效。 :

if (array_key_exists('ph', $data)) {
    echo $data['ph']['name'] . ': ' . $data['ph']['color']. PHP_EOL;
}

输出:

Phillipines: green

Demo on 3v4l.org