Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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/15.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 如何使用get_object_vars获取对象变量_Php_Json_Variables - Fatal编程技术网

Php 如何使用get_object_vars获取对象变量

Php 如何使用get_object_vars获取对象变量,php,json,variables,Php,Json,Variables,我试图从这个响应中提取“错误”部分: { "sp data": { "status": { "connection_status": "successful", "operation_status": "failed", "errors": { "error": [ "email - Field 'email' should be

我试图从这个响应中提取“错误”部分:

{
    "sp data": {
        "status": {
            "connection_status": "successful",
            "operation_status": "failed",
            "errors": {
                "error": [
                    "email - Field 'email' should be unique"
                ]
            }
        }
    },
    "operation_status": "failed"
}
我在上面坐了几个小时,我尝试过的每一次谷歌搜索都没有起到任何作用

代码如下:

        $onecoption_res = json_decode(onecoption_api($onecoption_api_data));
        $onecoption_error = "";


        if(is_object($onecoption_res)){
            if($onecoption_res->operation_status == 'failed') {
                $onecoption_error = get_object_vars($onecoption_res->{'spot data'}->status->errors->{'error[]'});
            }
        }
echo $onecoption_error[0];
这将返回:

Notice: Undefined property: stdClass::$error[] 
Warning: get_object_vars() expects parameter 1 to be object, null given in

我缺少什么?

error
是一个数组属性,所以通过
error
而不是
error[]
获取它:

$onecoption_error = $onecoption_res->{'sp data'}->status->errors->error[0];

如有必要,您可以在解码json后直接在回显线路中访问它:

if (is_string($onecoption_res)) {
    $onecoption_res = json_decode($onecoption_res);
}
echo $onecoption_res->sp_data->status->errors->error[0];

您发布的是JSON字符串,而不是PHP对象

但是,我建议将其转换为如下数组:

$onecoption_array = json_decode($onecoption_res, true);
$onecoption_error = $onecoption_array['sp data']['status']['errors']['error'];
然后您可以像这样访问它:

$onecoption_array = json_decode($onecoption_res, true);
$onecoption_error = $onecoption_array['sp data']['status']['errors']['error'];

我认为这应该奏效:

echo $onecoption_res->{'sp data'}->status->errors->{error}[0]

我认为您不需要使用get\u object\u vars,您只是试图提取字符串,对吗?获取\u object\u vars执行其他操作时,请检查此处的文档:

您如何捕获此响应?编辑问题。我在这里显示的响应是由Postman生成的。经过一些调整,如@Mohammad建议:
$onecoption\u res->{'sp data'}->status->errors->error[0]
-在
error
上没有括号。