我的返回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++;
}
如果可以,请帮忙。
答案 0 :(得分:1)
在使用JSON之前,您应该熟悉使用数组和对象,因为JSON只不过是。
看来你已经知道这两个概念了
obj->property
array[0]
使用JSON,您必须记住,您的一些对象属性将是数组。
现在,既然你的数据是一个多层次的三层结构,你也应该熟悉遍历数组,PHP提供了一个foreach
循环的实现,非常适合遍历动态生成的数组
使用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对象
答案 1 :(得分:0)
如果您觉得使用数组比使用对象访问数据[这可能是您在这里感到困惑的地方]感觉更舒服,那么您可以使用带有附加参数的json_decode:
$data = json_decode($result, true);
这将为您提供一个包含所有航班信息的数组($ data),然后您可以var_dump()它并查看您正在处理的层次结构并循环它。