Разбор части объекта json с несколькими уровнями с использованием PHP

Если вы откроете URL-адрес, вы увидите, что это очень длинная строка вспомогательных объектов. Я хочу извлечь значения для позиции 70. До сих пор я смог извлечь первое дерево без проблем ... Но если вы пойдете глубже, то я вообще не получу никакой обратной связи. Пожалуйста, проверьте приведенный ниже код и скажите мне, что я делаю неправильно?

$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>';

php,json,parsing,

1

Ответов: 2


1 принят

Для меня работает следующее:

$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 #";

1

вы можете попытаться изменить json_decode($port, true);(true изменит объект на массив, и будет лучше получить к нему доступ), как это, и получить доступ к нему, как в массивеecho $data[69]['passenger_vehicle_lanes']['maximum_lanes'].'<br>';

PHP, JSON, синтаксический анализ,
Похожие вопросы