file_get_contents json decode ничего не показывает

Я использую API подтверждения сайта Google для моего сайта.

$json = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$response."&remoteip=".$ip);

когда я печатаю echo $json; это показывает правильный ответ

{ "success": true, "challenge_ts": "2018-08-23T12:43:42Z", "hostname": "staging.my.com" }

но когда я попробовал

$data = json_decode($json,true);
echo $data->success;

это ничего не показывает

Кто-нибудь может сказать мне, что мне не хватает ??

0

Решение

$json = '{ "success": true, "challenge_ts": "2018-08-23T12:43:42Z", "hostname": "staging.my.com" }';
$data = json_decode($json,true);

Это создает ассоциативный массив из вашего примера строки JSON, а не объекта (используется var_dump($data); чтобы увидеть, что вы на самом деле сохранили).
Просто используйте правильный синтаксис для доступа к значениям массива:

echo $data["success"]; // prints '1'

или же:

echo ($data["success"])?'success':'failure'; // prints 'success'
1

Другие решения

Согласно PHP документ, если вы установите второй параметр assoc в true функция возвращает ассоциативные массивы вместо класса std.

 mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

ассоциативный

Когда TRUE, возвращенные объекты будут преобразованы в ассоциативные массивы.

Так что либо попробуйте $data['success'] или изменить json_decode($json, true) в json_decode($json),

0

По вопросам рекламы [email protected]