PHP对象的行为不像一个对象

时间:2018-09-10 02:54:02

标签: php json string object curl

我正在使用curl在PHP中提出JSON请求。我已将响应存储在名为$registerCompany的变量中,并将其打印在屏幕上以查看返回了什么,我通过打印变量来得到以下响应

{
resultCode: "duplicate",
result: {
isValid: true,
referenceKey: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"
},
success: false
}

当我尝试获取其$registerCompany->resultCode之类的属性时,我知道这是一个对象,我收到以下错误:

  

试图获取非对象的属性“ resultCode”

这是怎么回事,任何人都可以帮忙

这是我的PHP代码

function enquiry_company($data) {
    $curl = curl_init();

    curl_setopt_array($curl, [
          CURLOPT_URL => "hidden",
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "POST",
          CURLOPT_POSTFIELDS => json_encode($data),
          CURLOPT_HTTPHEADER => [
                "content-type: application/json",
                "x-api-key: hidden"
              ],
          CURLOPT_SSL_VERIFYHOST => 0,
          CURLOPT_SSL_VERIFYPEER => 0,
        ]);

    $response = curl_exec($curl);
    curl_close($curl);
    return $response;

}


$api_data = [
            "identityNumber" => 123456789,
            "commercialRecordNumber" => 123456789,
            "commercialRecordIssueDateHijri" => 01-01-2000,
            "phoneNumber" => 00000000000,
            "extensionNumber" => 0,
            "emailAddress" => mail@mail.com,
            "managerName" => 'Manager',
            "managerPhoneNumber" => 000000000,
            "managerMobileNumber" => 000000000,
        ];

$registerCompany = enquiry_company($api_data);
echo $registerCompany;
$registerCompany = json_decode($registerCompany, true);
$registerCompany = (object) $registerCompany;
echo $registerCompany->resultCode;

谢谢

3 个答案:

答案 0 :(得分:2)

如果使用$registerCompany = json_decode($registerCompany)返回数组,则将输出一个对象。

如果您做了$registerCompany = json_decode($registerCompany, true),这将为您提供数组而不是对象。

http://php.net/manual/en/function.json-decode.php

答案 1 :(得分:1)

假设您的响应是一个数组

首先将您的数组转换为一个对象

$registerCompany = (object)$registerCompany;

然后在这里,您的数组现在是一个对象,可以访问

echo $registerCompany->resultCode;

答案 2 :(得分:1)

首先使用gettype来查看变量的类型。

http://www.php.net/manual/en/function.gettype.php

从那里开始,您有三种可能。一个是它是一个字符串。如果是字符串,则表示它为JSON格式。这意味着您需要对格式进行JSON解码,这样才能正常工作。参见Eli's答案。

两个,它是数组形式。在这种情况下,请使用初学者的答案并将其类型转换为(object) $variableName;