如何在php中获取json的对应代码的名称值

时间:2013-06-25 19:04:36

标签: php json

我有以下价值: -

我想要的是什么: - 我想从城市代码中获取城市名称?

例如: - 如果输入为“BA”,我想显示“Bagmati”,如果输入为“DH”,我想显示“Dhawlagiri”

$value = '{"NP":{
"1" : {"code":"BA","name":"Bagmati"},
"2" : {"code":"BH","name":"Bheri"},
"3" : {"code":"DH","name":"Dhawalagiri"},
"4" : {"code":"GA","name":"Gandaki"},
"5" : {"code":"JA","name":"Janakpur"},
"6" : {"code":"KA","name":"Karnali"},
"7" : {"code":"KO","name":"Kosi"},
"8" : {"code":"LU","name":"Lumbini"},
"9" : {"code":"MA","name":"Mahakali"},
"10" : {"code":"ME","name":"Mechi"},
"11" : {"code":"NA","name":"Narayani"},
"12" : {"code":"RA","name":"Rapti"},
"13" : {"code":"SA","name":"Sagarmatha"},
"14" : {"code":"SE","name":"Seti"}
}';

我在PHP尝试了什么: -

$value = json_decode($json);
//print_r($value);

foreach ($value->IN->code as $city) {
    echo $city->name;
}

但我不确定,我怎么能得到这个。任何帮助将不胜感激。

请注意,我从javascript文件中获取了这些值: - state.js文件

"NP":{
"1" : {"code":"BA","name":"Bagmati"},
"2" : {"code":"BH","name":"Bheri"},
"3" : {"code":"DH","name":"Dhawalagiri"},
"4" : {"code":"GA","name":"Gandaki"},
"5" : {"code":"JA","name":"Janakpur"},
"6" : {"code":"KA","name":"Karnali"},
"7" : {"code":"KO","name":"Kosi"},
"8" : {"code":"LU","name":"Lumbini"},
"9" : {"code":"MA","name":"Mahakali"},
"10" : {"code":"ME","name":"Mechi"},
"11" : {"code":"NA","name":"Narayani"},
"12" : {"code":"RA","name":"Rapti"},
"13" : {"code":"SA","name":"Sagarmatha"},
"14" : {"code":"SE","name":"Seti"}
},

谢谢!

2 个答案:

答案 0 :(得分:3)

这会将你的json解码为本机php数组而不是数组和对象的组合,你只需迭代$value["NP"]数组,

$value = json_decode($json,1);

foreach ($value["NP"] as $el) {
    echo $el["name"];
}

答案 1 :(得分:0)

使用$assoc json_decode()参数来获取关联数组而不是对象:

$value = json_decode($json, true);

然后你可以迭代它:

foreach ($value['NP'] as $subarray) {
    if ($subarray['code'] == $input) {
        echo $subarray['name'];
        break;
    }
}