1

有来自 URL 的 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

4 回答 4

3

该属性members是一个数组而不是一个对象。事实上,由于您使用json_decode()的是第二个参数,所有的$json都是一个关联数组,而不是一个对象。

尝试:

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

PHPfiddle 演示

于 2013-09-28T00:17:29.400 回答
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

于 2013-09-28T00:29:07.677 回答
2

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

$json =json_decode($json_url, true);
$json=(object)$json;
于 2013-09-28T00:27:28.750 回答
1

照原样,您应该能够通过

$json['response']['members'][0]['memberid']
于 2013-09-28T00:29:14.027 回答