PHP - 像对象一样解析对象的属性

时间:2018-01-02 23:53:39

标签: javascript php json

我有以下JSON对象:

$json = '{
"Name": "Peter",
"countries": {
    "France": {
        "A": "1",
        "B": "2"
    },
    "Germany": {
        "A": "10",
        "B": "20"
    },
    ....
}
}';

我想解析属性"国家"中对象的属性。像一个数组。在Javascript中,我会使用lodash函数values。 PHP中是否有任何功能可以轻松完成?

3 个答案:

答案 0 :(得分:4)

这可能是重复的。

以下是您的需求:

$array = json_decode($json, true);

json_decode解析一个json对象。 true选项告诉它返回一个关联数组而不是一个对象。

具体访问国家/地区信息:

foreach ($array["countries"] as $ci) {
     //do something with data
}

有关详细信息,请参阅手册: http://php.net/manual/en/function.json-decode.php

编辑以在另一个答案中添加一个好点: 如果您还需要国家/地区名称,则可以使用foreach访问密钥和值。像这样:

foreach ($array["countries"] as $country => $info) {
     //do something with data
}

答案 1 :(得分:2)

您可以使用NUnit简单地将字符串解析为json,并使用如下对象表示法:

$countries = json_decode($json)->countries;
//do anything with $countries

答案 2 :(得分:1)

array_keys与Lodash _.values的基本内容相同。

$obj = json_decode($json, true); // cause you want properties, not substrings :P
$keys = array_keys($obj['countries']);

// $keys is now ['France', 'Germany', ...]

但是,在PHP中,您可以同时获得密钥和值。

foreach ($obj['countries'] as $country => $info) {
    // $country is 'France', then 'Germany', then...
    // $info is ['A' => 1, 'B' => 2], then ['A' => 10, 'B' => 20], then...
}