猿问

PHP JSON Array - 如何按相同的值修改 json 代码组

我使用 php foreach 函数按具有相同值的对象对我的表进行分组


$data = json_decode($geo, true);

$out = [];

foreach($data as &$element) {

     $out[$element['id']][] = [

        'lng' => $element['lng'],

        'lat' => $element['lat'],

        'time' => $element['time']

    ];

};

$geo = json_encode($out);

后来我得到了这个结果


"[{


"1":[{"lng":134.94157,"lat":36.871337,"time":1502159287}],


"2":[{"lng":134.94157,"lat":34.598832,"time":1502211838}],


"3":[{"lng":131.225,"lat":37.101667,"time":1502144333},{"lng":131.24,"lat":37.123333,"time":1502144343}]

}]"

现在我希望我的数据是这样的


[


[{"lng":134.94157,"lat":36.871337,"time":1502159287}],


[{"lng":134.94157,"lat":34.598832,"time":1502211838}],


[{"lng":131.225,"lat":37.101667,"time":1502144333},{"lng":131.24,"lat":37.123333,"time":1502144343}]


]

我怎样才能做到这一点?


米脂
浏览 119回答 1
1回答

繁星coding

首先,json_decode()您的初始 JSON 数据。然后,移动到解码数据中的第一个索引,并在array_values()的帮助下仅选择跳过键的数组值的值。<?php$prev_json = '[{"1":[{"lng":134.94157,"lat":36.871337,"time":1502159287}],"2":[{"lng":134.94157,"lat":34.598832,"time":1502211838}],"3":[{"lng":131.225,"lat":37.101667,"time":1502144333},{"lng":131.24,"lat":37.123333,"time":1502144343}]}]';$data = json_decode($prev_json,true);$new_json = json_encode(array_values($data[0]));echo $new_json;演示: https : //3v4l.org/bFmYn更新:查看更新后的代码,您可以删除$element['id']from$out[$element['id']]并使其$out[] = [..rest of your code..]正常工作。
随时随地看视频慕课网APP
我要回答