Php 获取值并通过外部json数组循环
我想通过PHP和Json创建一个国家数据库。我通过外部json获取数据:Php 获取值并通过外部json数组循环,php,json,Php,Json,我想通过PHP和Json创建一个国家数据库。我通过外部json获取数据: { "ph": { "name": "Philippines", "color": "green" }, "ch": { "name": "China", "color": "red" }, "us": { "name": "USA", "color": "blue" } }
{
"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'];
但是,只有当我在$data['ph']
中知道ph
时,这才有效。如果我有100多个国家,我想做一个for循环来显示它们的名称和颜色,我该如何实现呢
这有点像:
foreach($data作为$value){
echo$value[“某物”]。。。。
}
非常感谢 正如@Kevin在评论中指出的,要显示数组中的
名称
值,只需使用$value['name']
。要仅显示ph
国家/地区的值,您需要稍微修改foreach
循环,以获取每个条目的键以及值:
foreach ($data as $key => $value) {
if ($key == 'ph') {
echo $value['name'] . ': ' . $value['color'];
}
}
输出:
Phillipines: green
Phillipines: green
正如@misorude所指出的,如果您只想访问某个特定国家的值,那么更有效的方法是使用数组查看该国家的值是否存在,然后直接访问它们:
if (array_key_exists('ph', $data)) {
echo $data['ph']['name'] . ': ' . $data['ph']['color']. PHP_EOL;
}
输出:
Phillipines: green
Phillipines: green
你很接近了,在循环中。只需使用$value['name']
。或者您也不确定它是否有索引名称
?然后添加另一个循环again@Kevin谢谢!成功了。还有一件事,如果我只想显示名称
,如果数组的标题是ph
,我该怎么做?如果数组的标题是ph,它会跳过ch
和us
?在循环中使用一个if
语句,已经有了操作词if
。如果值是this->echo this我尝试了if($value==“ph”)
然后echo$value['name']
但是它没有显示任何内容$value
表示当前迭代中的整个数组,$value['name']
表示并指向实际值。因此,您也需要在if
语句中指出它。