回声部分json在php中返回

时间:2013-08-05 18:56:04

标签: php json

我的返回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++;
    }

如果可以,请帮忙。

2 个答案:

答案 0 :(得分:1)

在使用JSON之前,您应该熟悉使用数组和对象,因为JSON只不过是。

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

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

    使用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()它并查看您正在处理的层次结构并循环它。