Php数组-can';无法从数组中获取值
这段代码对我来说不符合逻辑。我能得到关于这种行为的任何解释以及如何修复它吗Php数组-can';无法从数组中获取值,php,arrays,Php,Arrays,这段代码对我来说不符合逻辑。我能得到关于这种行为的任何解释以及如何修复它吗 $data = '{"name":"CocaCola","price":1,"sync":0,"id":10792}'; $data = json_decode($data); print_r((array)$data); //Array ( [name] => CocaCola [price] => 1 [sync] => 0 [id] => 10792 ) print_r((array)$
$data = '{"name":"CocaCola","price":1,"sync":0,"id":10792}';
$data = json_decode($data);
print_r((array)$data);
//Array ( [name] => CocaCola [price] => 1 [sync] => 0 [id] => 10792 )
print_r((array)$data["id"]);
//nothing?
这是按以下方式执行的:
(array)$data["id"]
即,$data['id']
的结果被强制转换为数组;不将$data
强制转换为数组,然后访问其id
索引
如果需要数组,请使用json\u decode(…,true)
。否则,将对象作为对象处理,而不是将它们反复转换为数组。您不能这样做
(array)($data["id"])
试试看
print_r((array)$data["id"]);
json\u decode
返回具有属性的对象,而不是数组
混合json解码(字符串$json[,bool$assoc=false[,int$depth=512[,int$options=0]])
将true(bool值)传递给json_decode函数中的第二个参数,以获取关联数组。然后您将能够以数组的形式访问它
或者,您可以使用->
操作符访问属性
因此,在你的情况下:
$d = (array)$data;
print_r($d["id"]);
使用json_decode返回一个对象(例如$data->id)。
如果希望它返回一个数组,请使用json_decode($data,true) 使用
json\u decode($data)
,您将获得一个对象。要获取关联数组,请将第二个参数设置为TRUE
。有关更多信息,请参阅。感谢您的快速回复。这是事实。你问题中显示的输出也不正确。第二条语句将输出一个错误“致命错误:无法将stdClass类型的对象用作数组”。(如果您还没有)使用var_dump
获取您正在处理的类型结构的信息。好的,我现在明白了。我有一个对象,但我试图像数组一样使用它。谢谢你的帮助和-1.很好的解释+1@deceze,对于200000用户来说,这不是有点太复杂了吗?也许你现在应该继续问“缺少分号”的问题。@tereško是的,我觉得这里有点不对劲…^;;但还有谁会做出这样的解释。。。?
print_r($data->id);