Я пытаюсь получить строку URL из некоторого кода json.
Вот код json
{"files":["www.example1.com"],"previews":["www.example1preview.com"],"meta":{},"userId":"guest","product":{"id":"2335","name":"standard"},"type":"u"}
Глядя на то, что я видел в руководстве по PHP, я пытаюсь получить такие превью.
<?php
ob_start();
include('getjson.php');
$meta_value_json = ob_get_clean();
echo $meta_value_json;
$meta_value_json = json_decode($meta_value_json);
print $meta_value_json->{'previews'};
?>
Однако, похоже, это не выводит значение.
previews - это массив, даже если этот пример содержит только один элемент. Кажется, что они ничем не связаны, поэтому вы можете отобразить первый или перебрать его и отобразить все из них. Какой ты хочешь?
Первый - следующий лучший






Вам нужно получить значение из вашего декодированного json следующим образом: параметр $ class->. Зная, что превью - это массив, вам также нужно будет выбрать из него определенный элемент для печати (у меня есть первый):
<?php
ob_start();
include('getjson.php');
$meta_value_json = ob_get_clean();
echo $meta_value_json;
$meta_value_json = json_decode($meta_value_json);
print $meta_value_json->previews[0]; /// get the specific value
?>
Это объект, вам не нужно обращаться к нему как к массиву.
@ CD001 вы можете, если вы декодируете его как массив, забыл отредактировать это
json_decode($meta_value_json) в JSON, например { ... }, предоставит вам объект stdClass - вы можете получить доступ к любому значению, которое вам нравится, с помощью $var->property точно так же, как вы можете с $var['property'] для ассоциативных массивов ... ваш код ничего не исправляет. Конкретный атрибут previewsэто массив, вот в чем проблема.
Для меня это белые экраны.
@ user3123345 посмотри сейчас
Экспериментируя с командой php -a на терминале, я поместил ваш json в json_decode и смог получить вашу ссылку, просто выполнив:
print $meta_value_json->previews[0];
Единственная причина использовать print $ meta_value_json -> {'previews'}; по крайней мере, согласно документации php, если вы хотите, чтобы объект был выходным, а ключ, пытающийся получить, является числовым или имеет тип, который не поддерживается php.
Если немного поэкспериментировать, причина того, что print $ meta_value_json -> {'previews'}; Ошибка связана с тем, что print ожидает строку, в нашем случае превью - это массив. Поэтому, если вы напечатаете $ meta_value_json -> {'previews'} [0]; он также будет работать, как ожидалось.
Для начала
$meta_value_json->previewsбудет массивом, а не строкой.