Надежда С.
349 сообщений
#10 лет назад
Здравствуйте. И это опять я...
Получаю JSON строку {"response":{"count":1,"users":[123456]}}

Подскажите, пожалуйста, как записать 123456 в $users ?

Пробовала так:
[code]$json_decode = json_decode('{"response":{"count":1,"users":[123456]}}');
$users = $json_decode->response->users[0];
echo $users;[/code]

Но $users пуст...
Надежда С.
349 сообщений
#10 лет назад
вариант представленный в 1 сообщении оказывается работает, но не работает в боевых условиях

Так работает
[code]$json_decode = json_decode('{"response":{"count":1,"users":[123456]}}');
$users = $json_decode->response->users[0];
echo $users; //выводит 123456[/code]
Так не работает
[code]$get_contents = file_get_contents("https://api.vk.com/блаблабла");
echo $get_contents; //выводит {" response":{" count":1," users":[123456]}}
$json_decode = json_decode($get_contents);
$users = $json_decode->response->users[0];
echo $users; //пусто...[/code]
Олег Р.
600 сообщений
#10 лет назад
Вы должны получить массив(JSON), из этого массива прочитать... + могут буть проблемы с  кодировками...
Надежда С.
349 сообщений
#10 лет назад
Дурочка, забыла включить вывод ошибок.
Catchable fatal error: Object of class stdClass could not be converted to string in test.php on line 7
Андрей А.
798 сообщений
#10 лет назад
Json_decode($json, true) и дальше работаете как с обычным массивом.
json_last_error() может пригодиться, показывает последнюю ошибку 
Надежда С.
349 сообщений
#10 лет назад
Var_dump
object(stdClass)#1 (1) { ["response"]=>
object(stdClass)#2 (2) {
["count"]=>
int(1)
["users"]=>
array(1) {
[0]=>
int(123456)
}
}
}
Елена Б.
6863 сообщения
#10 лет назад
[code]" response"[/code]Пробелы вначале тут и дальше на выводе присутствуют или тут типограф шутит? 
Если присутствуют, то  делайте массивом, как написал b0nn1e, и не забывайте в ключе этот пробел.
Надежда С.
349 сообщений
#10 лет назад
floppox, сама не поняла на каком этапе взялся пробел, конечно же все без пробелов.
Спасибо всем, проблема благодаря вам решена!

Если кто то вдруг знает...
Через раз file_get_contents() выдает ошибку таймаута. То есть, сервер вк доступен через раз. Как можно заново переподключиться, если в течении 3 сек не удалось получить json ответ?
То есть выделить для функции file_get_contents() время на выполнение 3 секунды, если пусто, то пробуем заново необходимое кол-во раз пока не получим json

PHP Warning: file_get_contents(url): failedtoopenstream: Connection timed out in
Дмитрий Ч.
218 сообщений
#10 лет назад
[quote=WebAir]То есть выделить для функции file_get_contents () время на выполнение 3 секунды, если пусто, то пробуем заново необходимое кол-во раз пока не получим json[/quote]

вам нужен параметр timeout