Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用变量作为键解析JSON数据_Php_Json - Fatal编程技术网

Php 使用变量作为键解析JSON数据

Php 使用变量作为键解析JSON数据,php,json,Php,Json,我得到一个JSON响应,如下所示: stdClass Object ( [location00] => Array ( [0] => stdClass Object ( [id_0] => Array ( [0] => stdClass Object ( [id] =>

我得到一个JSON响应,如下所示:

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尽管如此