Samuel Ramzan
Samuel Ramzan

Reputation: 1856

Parsing part of a json object with multi levels using PHP

If you open the URL, you'll see that it's a very long string of sub objects. I want to extract the values for the 70 position. So far I've been able to extract the first tree without a problem ... But if you go deeper then I don’t get any feedback at all. Please check the code below and tell me, what am I doing wrong?

$url= "https://bwt.cbp.gov/api/waittimes";

$port = file_get_contents($url); // put the contents of the file into a variable
$data = json_decode($port); // decode the JSON feed

echo $data[69]->port_name.'<br>';
echo $data[69]->port_status.'<br>';
echo $data[69]->passenger_vehicle_lanes->maximum_lanes.'<br>';
echo $data[69]->passenger_vehicle_lanes->standard_lanes->lanes_open.'<br>';

Upvotes: 1

Views: 51

Answers (2)

koalaok
koalaok

Reputation: 5720

The following is working for me:

$url= "https://bwt.cbp.gov/api/waittimes";

$port = file_get_contents($url); // put the contents of the file into a variable
$data = json_decode($port, true); // decode the JSON feed


echo "There are ".count($data)."Ports".PHP_EOL;


$found=false;
foreach ($data as $key => $value) {
     //EDIT AFTER COMMENT**
     if($value['port_number']==250401){
        echo $value['port_name'].' '.$value['crossing_name'].PHP_EOL;
        $found=true;
        break;
     }
}


if(!$found) echo "couldn't find port #";

Upvotes: 1

Oleksandr Pobuta
Oleksandr Pobuta

Reputation: 405

can you try to change json_decode($port, true); (true will change object to array and it will be better to access it) like this and access it like in array echo $data[69]['passenger_vehicle_lanes']['maximum_lanes'].'<br>';

Upvotes: 1

Related Questions