Php数组 - 无法从数组中获取值

时间:2014-05-12 12:54:10

标签: 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["id"]);
//nothing?

这段代码对我来说不是逻辑。我可以获得有关此行为的任何解释以及如何解决此问题吗?

4 个答案:

答案 0 :(得分:3)

(array)$data["id"]

这是作为

执行的
(array)($data["id"])

即。 $data['id']的结果被强制转换为数组;不$data强制转换为数组,然后访问其id索引。

如果您需要数组,请使用json_decode(..., true)。否则将对象作为对象处理,而不是一遍又一遍地将它们转换为数组。

答案 1 :(得分:1)

json_decode返回一个包含属性的对象,而不是数组。

http://uk3.php.net/json_decode

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

将true(bool值)传递给json_decode函数中的第二个参数,以获取关联数组。然后,您将能够以阵列形式访问它。

或者,您可以使用->运算符访问属性。

所以在你的情况下:

print_r($data->id);

答案 2 :(得分:0)

你不能这样做

print_r((array)$data["id"]);

尝试改为

$d = (array)$data;
print_r($d["id"]);

答案 3 :(得分:0)

使用json_decode返回一个对象(例如$ data-> id) 如果您希望它返回一个数组,请使用json_decode($ data,true);