Php 使用变量作为键解析JSON数据
我得到一个JSON响应,如下所示:Php 使用变量作为键解析JSON数据,php,json,Php,Json,我得到一个JSON响应,如下所示: stdClass Object ( [location00] => Array ( [0] => stdClass Object ( [id_0] => Array ( [0] => stdClass Object ( [id] =>
stdClass Object
(
[location00] => Array
(
[0] => stdClass Object
(
[id_0] => Array
(
[0] => stdClass Object
(
[id] => 1
[name] => Wanted by Aryurumoka
[gold_reward] => 58900
[event] => 0
[description] => Not provided.
)
)
)
)
)
例如,我可以通过$quests->location00[0]->id\u 0[0]->name
获得[name]
假设我创建了一个新变量
$location='location00'
。现在如果我尝试$quests->$location[0]->id\u 0[0]->name'
,我会得到未定义的属性:stdClass::$l
错误。我也尝试了$location='location00[0]'
,但是我完全不知道为什么会发生这种情况。如何将location00
分配给变量,以便在解析JSON时使用它?我会尝试获取新的JSON,但您可以使用大括号插入对象属性检索:
$quests->{$location}[0]
您可以使用关联数组或$obj->{$var}:
<?php
$quests = json_decode($json, true);
$location = 'location00';
$name = $quests[$location][0]['id_0'][0]['name'];
啊,太好了,这很好用。因为我对解析JSON很陌生,你们能解释一下或者给我一个解释大括号用途的手册链接吗?@lolbas这和JSON并没有什么特别的关系。。。这只是一个PHP语法问题。@lolbas这是一个名为@lolbas的PHP概念,实际上您需要大括号,以便首先完成变量插值。如果你做了$quests->$location[0]
这与你做了$quests->{$location[0]}
类似,谢谢你的回复。使用数据作为数组真的很酷,但是我正在尝试开始使用对象+1尽管如此