Как напечатать значения jSON с помощью цикла

Я использую следующий код для печати вывода ответа JSON, но когда я пытаюсь напечатать

echo $obj->HotelListResponse->customerSessionId;  // This is working.

echo $obj->HotelListResponse->HotelList->HotelSummary->name; // This is not working.

Когда ответ содержит только один узел, его печать выполняется идеально, но когда имеется несколько узлов с одинаковым именем, он не печатается. Я попытался использовать foreach, как показано ниже. Я также попытался использовать цикл while, но все еще не могу распечатать список названий отелей.

Мой JSON-декодированный вывод похож на http://pastebin.com/Fr21DkEk

Общий код:

$url = "https://api.eancdn.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=99&apiKey=cbrzfta369qwyrm9t5b8y8kf&locale=en_AU&currencyCode=AUD&xml=<HotelListRequest><city>Brisbane</city><stateProvinceCode>QLD</stateProvinceCode><countryCode>AU</countryCode><arrivalDate>10/16/2014</arrivalDate><departureDate>10/18/2014</departureDate><RoomGroup><Room><numberOfAdults>2</numberOfAdults></Room></RoomGroup><numberOfResults>25</numberOfResults></HotelListRequest>";
$json = file_get_contents($url);
$obj = json_decode($json);

foreach($obj as $val) {
echo $val->HotelListResponse->HotelList->HotelSummary->name;
}

1

Решение

Попробуй это

foreach($obj->HotelListResponse->HotelList->HotelSummary as $val) {
echo $val->name . '<br/>';
}
1

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

HotelSummary это массив:

echo $val->HotelListResponse->HotelList->HotelSummary[0]->name;

Если вы хотите, чтобы все резюме отеля:

foreach($obj as $val) {
foreach($val->HotelListResponse->HotelList->HotelSummary as $sum) {
echo $sum->name;
}
}
1

Да, вы можете получить прямой доступ к ним внутри foreach. Как это:

foreach($obj->HotelListResponse->HotelList->HotelSummary as $val) {
// ^^
// since you're interested on just names, you can point it directly on that object, then each of that batch is in `$val`
echo $val->name . '<br/>';
}

// or start from the parent
foreach($obj as $values) {

$customerSessionId = $values->customerSessionId;
echo $customerSessionId . '<hr/>';
$hotelList = $values->HotelList;
foreach($hotelList->HotelSummary as $hotelsummary) {
echo $hotelsummary->name . '<br/>';
}
}
1
По вопросам рекламы [email protected]