PHP объект не ведет себя как объект - PullRequest
0 голосов
/ 10 сентября 2018

Я делаю JSON-запрос в PHP, используя curl. Я сохранил ответ в переменной с именем $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 голосов
/ 10 сентября 2018

Предполагая, что ваш ответ является массивом

сначала преобразуйте ваш массив в объект, чтобы сделать это

$registerCompany = (object)$registerCompany;

тогда вы идете, ваш массив теперь является объектом и может иметь доступ

echo $registerCompany->resultCode;
0 голосов
/ 10 сентября 2018

Используйте gettype, чтобы увидеть, какой тип переменной у вас в первую очередь.

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

Оттуда у вас есть три возможности.Во-первых, это строка.Если это строка, это означает, что она в формате JSON.Это означает, что вам нужно JSON декодировать формат, чтобы он работал.См. ответ Эли .

Два, он в форме массива.В этом случае используйте ответ новичка и введите приведение к объекту с (object) $variableName;

0 голосов
/ 10 сентября 2018

если вы получите массив, использующий $registerCompany = json_decode($registerCompany), это выведет объект.

если вы сделали $registerCompany = json_decode($registerCompany, true), это даст вам массив, а не объект.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...