【问题标题】:formating json data. how to merge json array with same value as key?格式化 json 数据。如何合并具有与键相同值的json数组?
【发布时间】:2016-09-10 21:58:00
【问题描述】:

对不起,如果我的问题有点令人困惑。 以下是我的 json 输出形式 mysql:

[{"ID":"2","BatchID":"0","Day":"Sunday","Low":"01:15","High":"02.45","Mid":    "01:30 01:45 02:00 02:15 02:30"},    {"ID":"1","BatchID":"0","Day":"Sunday","Low":"00.45","High":"00:30","Mid":"    01:30 01:45 02:00 02:15 02:30"}]

在这种情况下,我想使用“星期日”这一天来合并两个对象以形成如下内容:

"Sunday":[
        {
            "low":"00:15",
            "high":"00.45",
            "mid":["00:30"]
        },
        {
            "low":"01:15",
            "high":"02.45",
            "mid":["01:30","01:45","02:00","02:15","02:30"]
        }

    ]

另外,有没有什么工具可以帮助我在 php 中制作模型以将其保存在数据库中?

提前致谢。

最大

【问题讨论】:

  • ps:我的 php 对象看起来像这样: Array ( [0] => stdClass Object ( [ID] => 2 [BatchID] => 0 [Day] => Sunday [Low] => 01:15 [高] => 02.45 [中] => 01:30 01:45 02:00 02:15 02:30 ) [1] => stdClass 对象 ( [ID] => 1 [BatchID] => 0 [Day] => Sunday [Low] => 00.45 [High] => 00:30 [Mid] => 01:30 01:45 02:00 02:15 02:30 ) )

标签: php mysql json codeigniter


【解决方案1】:

您可以按照其他答案的建议在 PHP 中重新组织它。你也可以用 Javascript 重新组织它:

var values = [{"ID":"2","BatchID":"0","Day":"Sunday","Low":"01:15","High":"02.45","Mid":    "01:30 01:45 02:00 02:15 02:30"},    {"ID":"1","BatchID":"0","Day":"Sunday","Low":"00.45","High":"00:30","Mid":"    01:30 01:45 02:00 02:15 02:30"}];

var final = {};
values.forEach(function(element, index, array) {
    if (!final[element.Day]) 
        final[element.Day] = [];

    final[element.Day].push(
        {
            "low": element.Low,
            "high": element.High,
            "mid": element.Mid.split(" ")
        }
    );
});

【讨论】:

    【解决方案2】:

    你可以使用类似的东西:

    $data = json_decode($mysql_data, true);
    $res = [];
    foreach ($data as $d)
    {
        $add = ['low'  => $d['Low'],
                'high' => $d['High'],
                'mid'  => explode(' ', trim($d['Mid']))];
        if (!isset($res[$d['Day']]))
            $res[$d['Day']] = $add;
        else
            $res[$d['Day']][] = $add;
    }
    $pretty_data = json_encode($res);
    

    【讨论】:

    • 谢谢 Ebahi,你救了我一整晚! :)) 我删除了条件,它就像一个魅力;) /* if (!isset($res[$d['Day']])) $res[$d['Day']] = $add;否则 */
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2016-12-29
    • 2020-12-29
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多