从PHP中获取JSON中的单个值

时间:2013-09-28 00:15:11

标签: php json

来自网址的JSON代码:

{
    "response": {
        "members": [
            {
                "memberid": "123456"
            }
        ]

    }
}

如果我使用此代码提取单个值,则不会列出任何内容,为什么?

$json_url = file_get_contents("http://example.com/json");   
$json = json_decode($json_url, true);
echo $json->response->members->memberid;

但是当我试着写这个......

print_r($json['response']);

......所以会得到这个......

Array ( [members] => Array ( [0] => Array ( [memberid] => 123456 ) ) )

我做错了什么?

4 个答案:

答案 0 :(得分:3)

属性members是一个数组而不是一个对象。事实上,因为你使用json_decode()和第二个参数,所有$json都是一个关联数组,而不是一个对象。

尝试:

echo $json['response']['members'][0]['memberid'];

请参阅PHPfiddle demo

答案 1 :(得分:3)

您将json响应解码为数组,因此您必须像这样访问它:

$json_url = file_get_contents("http://example.com/json");   
$json = json_decode($json_url, true);
echo $json['response']['members']['memberid'];

或者您可以将其解码为对象:json_decode($json);(删除true),允许您将其作为对象引用 - $json->response->member->memberid

答案 2 :(得分:2)

如果要将数组值作为对象,则应使用此代码将数组转换为对象:

$json =json_decode($json_url, true);
$json=(object)$json;

答案 3 :(得分:1)

按原样,您应该可以通过

访问它
$json['response']['members'][0]['memberid']