0

我返回的 json 看起来像这样http://pastebin.com/Nbr161s3

我想回声

body->airTicketListResponse->routings->mainAirlineName
body->airTicketListResponse->routings->adultBasePrice
body->airTicketListResponse->routings->trips->segments->departureAirportCode
body->airTicketListResponse->routings->trips->segments->departureTime //only the time here
body->airTicketListResponse->routings->trips->segments->duration

对于每个路由。

我该怎么做呢?这就是我所拥有的,但我迷路了,我知道这很遥远。

$result = data returned here http://pastebin.com/Nbr161s3
$airTicketListResponse = $result->body->airTicketListResponse;
$routings = $result->body->airTicketListResponse->routings;
$trips = $result->body->airTicketListResponse->routings->trips;
$segments = $result->body->airTicketListResponse->routings->trips->segments;

foreach($airTicketListResponse as $item){
    $i=0; 
    $i<count($routings); 

    echo '<span style="font-weight:bold;">Airline - '.$item->routings[i]->mainAirlineName.' Price - '.$item->routings[i]->adultBasePrice.'</span><br />'.$item->routings[i]->trips[i]->segments[i]->departureAirportCode.' '.$item->routings[i]->trips[i]->segments[i]->departureTime.'<br /><br />';
    $i++;
    }

如果可以的话请帮忙。

4

2 回答 2

1

在使用 JSON 之前,您应该熟悉使用数组和对象,因为 JSON 仅此而已。

看来你已经知道这两个概念了

  1. 要访问 PHP 中的对象属性,请使用obj->property
  2. 要访问数组的值,请在括号内指定索引array[0]

使用 JSON,您只需要记住您的一些对象属性将是数组。

现在,由于您的数据采用多级三类结构,您还应该熟悉遍历数组,PHP 提供了一个foreach循环实现,非常适合遍历动态生成的数组

使用and变量会foreach($array as $index => $var)在遍历数组时自动设置为数组中每个元素的索引和值,因此您无需手动跟踪索引(即)$index$var$i

现在让我们开始浏览您的数据:

首先我们找到你的routings数组

$result = json_decode($data);
$airTicketListResponse = $result->body->airTicketListResponse;
$routings = $airTicketListResponse->routings;

现在我们使用foreach循环遍历每个路由并打印所需的属性

foreach($routings as $routing){ //$routing will hold the object value in each loop
    echo 'Airline '.$routing->mainAirlineName.'<br>';
    echo 'Adult Base Price '.$routing->adultBasePrice.'<br>';
}

获得像上面这样的单个属性非常简单,但是对于信息,segments我们首先需要一个嵌套foreach,因为我们有多个trips用于每个路由,然后是第二个嵌套foreach,因为每个行程都有多个段

foreach($routings as $routing){ //$routing will hold the object value in each loop
    echo 'Airline '.$routing->mainAirlineName.'<br>';
    echo 'Adult Base Price '.$routing->adultBasePrice.'<br>';
    foreach($routing->trips as $trip){
        foreach($trip->segments as $index => $segment){
            echo 'Segment '.$index.':<br>'
            echo 'Depart From '.$segment->departureAirportCode.'<br>';
            echo 'Departure Time '.$segment->departureTime.'<br>';
            echo 'Duration '.$segment->duration.'<br>';
        }
    }
}

就是这样。我希望我的解释很清楚,并且您了解如何遍历 JSON 对象

于 2013-08-05T19:43:22.063 回答
0

如果您觉得使用数组而不是使用对象来访问您的数据更舒服[这可能是您在这里感到困惑的地方],那么您可以使用 json_decode 和一个附加参数:

$data = json_decode($result, true); 

这将为您留下一个包含所有航班信息的数组 ($data),然后您可以 var_dump() 它并查看您正在处理的层次结构并循环遍历它。

于 2013-08-05T19:08:27.743 回答