我想通过一些JSON数据循环并提取特定值。这里是JSON数据和部分工作代码。PHP JSON对象嵌套循环数据语法
$jsondata = '
[
{
"id" : "421356",
"trip_update" : {
"trip" : {
"trip_id" : "421356",
"start_time" : "12:05:00",
"start_date" : "20130926",
"route_id" : "15"
},
"stop_time_update" : {
"stop_sequence" :70,
"departure" : {
"delay" : 240,
"time" : 1380215057
},
"stop_id" : "6090"
},
"stop_time_update" : {
"stop_sequence" :71,
"departure" : {
"delay" : 240,
"time" : 1380215075
},
"stop_id" : "6095"
}
}
}]';
$result = json_decode($jsondata);
foreach($result as $value) {
echo "trip_id: ".$value->trip_update->trip->trip_id;
if (gettype($value->trip_update) == "object") {
foreach($value->trip_update as $item) {
echo " - stop_sequence: ".$item->stop_sequence;
}
}
}
我可以在'trip_update-> trip'下得到第一级的数据。但'trip_update'中也可以有任意数量的'stop_time_update'数据。由于这些数据与trip_update数据有关,因此我需要遍历它并关联它。
的最终目标是将这些数据保存到数据库(在代码中未示出),所以为了清楚起见,这将是简化2行DB数据的我想在这个例子中,以节省:
trip_id,stop_sequence
421356,70
421356,71
源数据中可以有任意数量的stop_sequences。
这是一个互动的链接代码,编辑或乱用: http://sandbox.onlinephpfunctions.com/code/f21ca8928da7de3e9fb351edb075d0a446906937
尝试[JSONlint](http://jsonlint.org),虽然这是有效的JSON,的'stop_time_update'被移除(或者更确切地说,第一,如果改写第二个)第二次出现,则对象属性和能不定义两次。它应该是一个包含两个对象的数组 –
谢谢,它验证。 –
我知道它验证,因为我在我的评论中提到它。要点是,它的结构很糟糕,你应该把它提到这个JSON的提供者。 –