Вы обращаетесь к нему с использованием синтаксиса, похожего на массив:
echo j_string_decoded['urls'][1];
Принимая во внимание, что объект возвращается.
Преобразуйте его в массив, указав второй аргумент true
:
$j_string_decoded = json_decode($json_str, true);
Как сделать это:
$json_str = '{"urls":["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';
$j_string_decoded = json_decode($json_str, true);
echo j_string_decoded['urls'][1];
Или Попробуйте это:
$j_string_decoded->urls[1]
Обратите внимание на оператор ->
, используемый для объектов.
Цитированиеиз документов:
Возвращает значение, закодированное в json в соответствующем типе PHP.Значения true, false и null (без учета регистра) возвращаются как TRUE, FALSE и NULL соответственно.NULL возвращается, если json не может быть декодирован или если закодированные данные глубже, чем предел рекурсии.
http://php.net/manual/en/function.json-decode.php