1

Hello every one i am working on wego flight api after sending post request i have an array of json data in following pattern

{"response":{
"pendingResults":"true",
"itineraries":[
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401116400000,"layoverInMin":0,"flightNumbers":["SQ981"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 22:00 +0700","airports":["BKK","SIN"],"arrivalTime":1401121500000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/27 00:25 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553817,"providerId":"singaporeair.com","id":"SQ974[SIN-BKK]|SQ981[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286949361958","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399956900000,"layoverInMin":0,"flightNumbers":["SQ974"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 12:55 +0800","airports":["SIN","BKK"],"arrivalTime":1399969200000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 15:20 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401096600000,"layoverInMin":0,"flightNumbers":["SQ977"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 16:30 +0700","airports":["BKK","SIN"],"arrivalTime":1401101700000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 18:55 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553833,"providerId":"singaporeair.com","id":"SQ976[SIN-BKK]|SQ977[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286965418532","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399968000000,"layoverInMin":0,"flightNumbers":["SQ976"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 16:00 +0800","airports":["SIN","BKK"],"arrivalTime":1399980300000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 18:25 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401107400000,"layoverInMin":0,"flightNumbers":["SQ979"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 19:30 +0700","airports":["BKK","SIN"],"arrivalTime":1401112500000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 21:55 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553835,"providerId":"singaporeair.com","id":"SQ976[SIN-BKK]|SQ979[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286967291059","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399968000000,"layoverInMin":0,"flightNumbers":["SQ976"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 16:00 +0800","airports":["SIN","BKK"],"arrivalTime":1399980300000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 18:25 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401116400000,"layoverInMin":0,"flightNumbers":["SQ981"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 22:00 +0700","airports":["BKK","SIN"],"arrivalTime":1401121500000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/27 00:25 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553839,"providerId":"singaporeair.com","id":"SQ976[SIN-BKK]|SQ981[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286971168219","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399968000000,"layoverInMin":0,"flightNumbers":["SQ976"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 16:00 +0800","airports":["SIN","BKK"],"arrivalTime":1399980300000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 18:25 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401075600000,"layoverInMin":0,"flightNumbers":["SQ973"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 10:40 +0700","airports":["BKK","SIN"],"arrivalTime":1401080700000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 13:05 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"437","totalAmount":"437","pricePerPassenger":"437","currencyCode":"USD","totalPricePerPassenger":"437","includesTax":true},"generatedDate":1399013553842,"providerId":"singaporeair.com","id":"SQ978[SIN-BKK]|SQ973[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286974435322","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399977300000,"layoverInMin":0,"flightNumbers":["SQ978"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 18:35 +0800","airports":["SIN","BKK"],"arrivalTime":1399989600000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 21:00 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401084900000,"layoverInMin":0,"flightNumbers":["SQ975"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 13:15 +0700","airports":["BKK","SIN"],"arrivalTime":1401090000000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 15:40 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"437","totalAmount":"437","pricePerPassenger":"437","currencyCode":"USD","totalPricePerPassenger":"437","includesTax":true},"generatedDate":1399013553848,"providerId":"singaporeair.com","id":"SQ978[SIN-BKK]|SQ975[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286980412767","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399977300000,"layoverInMin":0,"flightNumbers":["SQ978"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 18:35 +0800","airports":["SIN","BKK"],"arrivalTime":1399989600000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 21:00 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401096600000,"layoverInMin":0,"flightNumbers":["SQ977"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 16:30 +0700","airports":["BKK","SIN"],"arrivalTime":1401101700000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 18:55 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"437","totalAmount":"437","pricePerPassenger":"437","currencyCode":"USD","totalPricePerPassenger":"437","includesTax":true},"generatedDate":1399013553854,"providerId":"singaporeair.com","id":"SQ978[SIN-BKK]|SQ977[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286986666243","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399977300000,"layoverInMin":0,"flightNumbers":["SQ978"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 18:35 +0800","airports":["SIN","BKK"],"arrivalTime":1399989600000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 21:00 +0700"}},

i want to print totalPricePerPassenger

following is my php code

$result2=curl_exec($ch);



$data = json_decode($result2);
$data = objectToArray($data);

function objectToArray($object)
{
    if (!is_object($object) && !is_array($object)) {
        return $object;
    }
    if (is_object($object)) {
        $object = (array )$object;
    }
    return array_map('objectToArray', $object);
}


foreach($data as $root){
     foreach($root as $rootOne){
        if(is_array($rootOne)){
            foreach($rootOne as $rootArrays){
                if(!empty($rootArrays["price"])){
                $priceArray = $rootArrays["price"];
                echo $priceArray["totalPricePerPassenger"];
                echo"<hr>";
                }
            }
        }
     }
}
Adeel Nawaz
  • 398
  • 2
  • 10

2 Answers2

2

First of all, you need to make sure your JSON string is valid. Use an online linter like JSONLint for this purpose.

Note that you don't need any fancy functions like objectToArray() here because json_decode() by default allows the string to be decoded into an array (as opposed to an object). The only change you need to make is set the second parameter as TRUE:

$data = json_decode($json, TRUE); // no need to use objectToArray()

Then inspect the structure of the array using print_r():

echo '<pre>' . print_r($data, TRUE) . '</pre>;

Once you know the structure of the array, it should be pretty easy to loop through and print the required values. For printing all the pricePerPassenger values, simply do:

foreach ($data['response']['itineraries'] as $itinerary) {
    echo $itinerary['price']['pricePerPassenger'] . "\n";
}

Working demo

Amal Murali
  • 75,622
  • 18
  • 128
  • 150
  • @TerryHiggins: Step one: enable error reporting by adding [these lines of code](http://stackoverflow.com/a/6575502/1438393) to the very top of your script. Refresh the page. What error do you get? – Amal Murali May 02 '14 at 13:38
  • @TerryHiggins: That means you're not getting an array. What does your JSON string look like? Where do you get it from? – Amal Murali May 02 '14 at 13:50
  • @TerryHiggins: Note that I can only see an error on that page and not actual code. It would be helpful if you post the exact code somewhere so that I can see it. – Amal Murali May 02 '14 at 13:51
  • Please check URL now http://lifetimecoupons.com/abs1/new.php i have added code now too – Adeel Nawaz May 02 '14 at 13:56
  • @TerryHiggins: You're missing the API key in the URL. What happens when you try to load the URL manually, in your browser? Also, it seems you did not read the answer. **Read it again.** – Amal Murali May 02 '14 at 14:02
0

Just use json_decode($json, true);

You'll be returned an array which you can echo much more neatly.

i-CONICA
  • 2,361
  • 9
  • 30
  • 45