Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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数组时获取未定义的属性:stdClass::$insertion_Php_Json_Parsing - Fatal编程技术网

Php 尝试解析JSON数组时获取未定义的属性:stdClass::$insertion

Php 尝试解析JSON数组时获取未定义的属性:stdClass::$insertion,php,json,parsing,Php,Json,Parsing,我在这个json上尝试提取插入顺序数组 { "response" : { "status" : "OK", "count" : 1, "insertion-orders" : [{ "id" : 5, "name" : "First Choice", "code" : null, "state" : "active

我在这个json上尝试提取插入顺序数组

{
    "response" : {
        "status" : "OK",
        "count" : 1,
        "insertion-orders" : [{
                "id" : 5,
                "name" : "First Choice",
                "code" : null,
                "state" : "active",
                "line_items" : [{
                        "id" :352,
                        "timezone" : "Europe/London"
                    }, {
                        "id" :358,
                        "timezone" : "Europe/London"
                    }
                ],
                "labels" : null,
                "safety_pacing" : true
            }
        ]
    }
}
我所做的是json是json字符串:

$Json = json_decode($TheJson);
$JsonResponse = $Json->response;
$OrdersArray = $JsonResponse->insertion-orders;
我得到的错误是:

Notice: Undefined property: stdClass::$insertion in /home/foo/a/foo.com/user/htdocs/FunctionManager.php on line 16

Notice: Use of undefined constant orders - assumed 'orders' in /home/foo/a/foo.com/user/htdocs/FunctionManager.php on line 16
第16行是:

 $OrdersArray = $JsonResponse->insertion-orders;
我只是不明白,它是有效的json

$JsonResponse->insertion-orders;
被解析为

$JSonResponse->insert MINUS orders
不能在使用箭头符号的对象属性名称中使用
-
。那一定是

$JsonResponse->{'insertion-orders'}
相反

至于您关于它是有效JSON的评论,它在Javascript中也不起作用:

json.insertion-orders 

也将被视为
json.insertion减去orders

,但其无效PHPUse
$JsonResponse->{'insertion-orders'}
是否允许在PHP中对对象使用数组表示法?我认为可以执行
$JsonResponse->{“insertion orders”}
但更好的办法可能是将true作为第二个参数传递给json_解码,并将其作为数组处理。对。就我而言,这是一个愚蠢的想法,把JS/php搞混了。编辑了答案。但是在js中,对于解释原始代码失败的原因,即使您发布正确解决方案的速度很慢,到今天json[“插入顺序”]+1仍然有效。