2013-08-05 4 views
1

У меня возникли проблемы при разборе этот набор данных, который я отправил на Pastebin здесь http://pastebin.com/TmZGw92jразбора JSON и дисплей с PHP

Я могу уйти в него, насколько техкарт но не может идти дальше по какой-то причине. Вот мои вары, что я настроил:

$airTicketListResponse = $result->body->airTicketListResponse; 
$routings = $airTicketListResponse->routings; 
$trips = $routings->trips; 
$segments = $trips->segments; 

Я могу print_r ($ маршрутизация), но когда я пытаюсь print_r ($ сегментов) я получаю ничего не вернулось. Я хотел бы вытащить предметы из маршрутов и сегментов.

вот мой текущий цикл foreach, который держится в поездках.

foreach($routings as $item){ 
    echo '<span style="font-weight:bold;">Airline - '.$item->mainAirlineName.' Price - '.$item->adultBasePrice.'</span><br />'.$item->trips->segments->departureAirportCode.' '.$item->trips->segments->departureTime.'<br /><br />'; 

    } 
+0

В JSON в 'raw_body: Unirest \ HttpResponse: private' кажется недействительным, вы пропустили два' '} в конце. – Halcyon

+0

да, я пропустил это в пасте ... это правда. Итак, как мне добраться до сегментов? – DSmith

+0

Прежде всего, используйте 'var_dump' вместо' print_r' Убедитесь, что уровень ошибки установлен на максимальный, то есть 'error_reporting (2047);' поэтому вы увидите любые уведомления, которые могли бы помочь. –

ответ

2

В trips и segments элементов являются массивами объектов, а не одного объекта.

Для этого вам необходимо обратиться к элементу массива [0], какая часть структуры.

$trips = $routings[0]->trips; 
$segments = $trips[0]->segments; 

Обратите внимание, что, как представляется, две поездки, вам также потребуется $trips[1]->segments, если вы хотите, чтобы все сегменты.

Скорее всего, вы захотите использовать петли foreach(), чтобы читать их, а не напрямую ссылаться на клавиши массива.

Что-то вроде этого?

foreach($routings as $routing) { 
    $trips = $routing->trips; 
    .... do something here with $trips? .... 
    foreach($trips as $trip) { 
     $segments = $trip->segments; 
     .... do something here with $segments? .... 
    } 
} 
+0

+1 потому что это более подробное объяснение, чем мое. –

+0

@Spudley, так что бы выглядел цикл foreach для доступа к элементам в маршрутах и ​​сегментах? – DSmith

+0

@smitty - я отредактировал ответ, чтобы включить некоторый код заглушки. вам, очевидно, нужно будет сделать больше, но именно то, что вы делаете с этим, зависит от того, что делает ваша программа, поэтому я не могу с этим поделать. – Spudley

0

У вас есть несколько слоев массивов, вложенных в него. Я думаю, что ваш код должен изменить это:

$trips = $routings[0]->trips; 
$segments = $trips[0]->segments; 
Смежные вопросы