#php #json
#php #json
Вопрос:
У меня есть массив ключей / значений PHP, и я хочу извлечь оттуда значение и отобразить его в div.
Пока у меня есть:
$homepage = file_get_contents('http://graph.facebook.com/1389887261/reviews');
$parsed = json_decode($homepage);
Я хочу получить значения из массива пары ключ / значение следующим образом:
foreach ($parsed as $key => $values){
echo $values['rating'];
}
Но это не возвращает значение. Что я делаю не так?
Ответ №1:
Используйте PHP для каждой ссылки на индекс, это дает вам возможность получить ключ или значение.
$parsed = json_decode($homepage,true);
foreach ($parsed['data'] as $key => $values){
echo $values['rating'];
}
Комментарии:
1. я получаю
Cannot use object of type stdClass as array
2. Это неверно.
$parsed
является объектом стандартного класса, а не массивом.3. проверьте ответ Фредди, вам нужно будет указать true в качестве второго аргумента в
$parsed = json_decode($homepage,true);
. Я также обновил свой ответ этим.
Ответ №2:
$rating = $parsed->data[0]->rating;
Работает ли это у вас?
Комментарии:
1. я получаю
Cannot use object of type stdClass as array
2. @Patrioticcow Я изменил свой ответ — первая версия работала бы, если
json_decode()
возвращала бы ассоциативный массив (чего здесь нет).3. @downvoter Причина, по которой вы проголосовали против меня, в том, что он вернул эту ошибку или что-то еще?
4. убрал понижающий голос, когда вы исправили фактическую ошибку в примере кода (ассоциативный массив против stdClass) 🙂
5. @Chris Ок, спасибо 🙂 Прошу прощения — я не тестировал это перед публикацией и не обнаружил ничего неправильного. Но на самом деле нет причин получать это как ассоциативный массив.
Ответ №3:
foreach ($parsed['data'] as $key => $values){
echo $values['rating'];
}
Обратите внимание, json_decode() возвращает object по умолчанию. Для выполнения вышеуказанного вам необходимо обновить следующее:
$parsed = json_decode($homepage, true);
Ответ №4:
сделано путем сброса вашего примера)
foreach ($parsed->data as $key => $values){
echo $values->rating;}
Ответ №5:
Если вы не передадите второй параметр, вы получите обратно объект вместо массива, см. http://php.net/json_decode
$parsed = json_decode($homepage,true);
foreach ($parsed['data'] as $key => $values){
echo $values['rating'];
}
сделает это за вас.
Ответ №6:
Значения являются объектами стандартного класса, а не массивами. Итак, чтобы выполнить цикл:
$homepage = file_get_contents('http://graph.facebook.com/2345053339/reviews');
$parsed = json_decode($homepage);
foreach($parsed->data as $values) {
echo 'Rating:'.$values->rating;
}
Обратите внимание, что я использую ->
оператор для доступа к свойствам объекта…
Ответ №7:
Рейтинг — это подмассив массива [‘data’], поэтому:
foreach ($parsed['data'] as $key => $values){
echo $values['rating'];
}
Ответ №8:
Корневой узел для «проанализированных» — это данные, которые представляют собой массив, который вам, вероятно, нужен..
foreach($parsed['data'] as $key => $value) {
echo $value['rating'];
}
Комментарии:
1. Это неверно.
$parsed
является объектом стандартного класса, а не массивом.2. @Крис, полегче с отрицательными оценками. Большинство из этих ответов имеют обновления.
3. Ответы абсолютно неверны, нефункциональный код. Это все хорошо, чтобы заполнить вопрос кучей ответов, если каждый из них является дубликатом других неправильных ответов, какая в этом польза? Следовательно, понижающий голос. Это не гонка или соревнование — идея состоит в том, чтобы фактически ответить на вопрос. А?