首页 > 解决方案 > 如何将json数组更改为另一种格式

问题描述

我有一个 JSON 数组,我需要将其更改为另一种数组格式。请查看以下数组,

我的数组是,

Array{
BUS NO.1:
Array{
0:{trip: "Trip00011", runningKm: "5000"}
1:{trip: "Trip00012", runningKm: "2565"}},

BUS NO.2:
Array{
0:{trip: "Trip00021", runningKm: "2400"}
1:{trip: "Trip00023", runningKm: "1500"}
2:{trip: "Trip00025", runningKm: "3000"}}

}

我需要,

data :[{y:BUS NO.1, "Trip00011": "5000","Trip00012":"2565"},
    {y:BUS NO.2, "Trip00021": "2400","Trip00023":"1500","Trip00025":"3000"},

标签: jqueryarraysjson

解决方案


试试这个。您只需要 1 个循环和一个 array_merge。

$originalData = [
    [
        'vehicle' => 'BUS NO.1',
        'trip_name' => 'Trip00011', 
        'running_km' => '5000'
    ],
    [
        'vehicle' => 'BUS NO.2',
        'trip_name' => 'Trip00021', 
        'running_km' => '2400'
    ],
    [
        'vehicle' => 'BUS NO.2',
        'trip_name' => 'Trip00023', 
        'running_km' => '1500'
    ],
];

$responseData = [];

foreach ($originalData as $od){
    $temp = [
        'y' => $od['vehicle'],
    ];

    $temp[$od['trip_name']] = $od['running_km'];

    if (!isset($responseData[$od['vehicle']])){
        $responseData[$od['vehicle']] = $temp;  
    } else {
        $responseData[$od['vehicle']] = array_merge($responseData[$od['vehicle']], $temp);
    }
}

echo json_encode(array_values($responseData));

输出(JSON):[{"y":"BUS NO.1","Trip00011":"5000"},{"y":"BUS NO.2","Trip00021":"2400","Trip00023":"1500"}]


推荐阅读