douchibu7040 2017-01-10 10:13
浏览 96
已采纳

合并两个数组:按id排序并删除重复 - PHP

I want to merge two arrays but with 2 constraints:

  • sort by order, according to ID
  • if there are two identical IDs, only display it once (no duplicate)

first array :

{
    "products": {
        "0": {
            "title": "myTitle",
            "url": "xxxxxx",
            "id": "309132"
        },
        "1": {
            "title": "myTitle",
            "url": "",
            "id": "309123",
        },...
     }
}

second array :

{
    "products": {
        "0": {
            "title": "myTitle",
            "url": "xxxxxx",
            "id": "329102"
        },
        "1": {
            "title": "myTitle",
            "url": "",
            "id": "439023",
        },...
     }
}

I tried :

$data3 = array_unique(array_merge($data1,$data2), SORT_NUMERIC);

or with SORT_REGULAR, but I did not achieve my requirements.

  • 写回答

1条回答 默认 最新

  • doumengmian1180 2017-01-10 10:32
    关注

    Your data does not look like an array it is JSON. using same structure of your json in array, you can try this:

    <?php 
    $arr=array(
    "products"=> array(
    "0"=> array(
    "title"=> "myTitle",
    "url"=> "xxxxxx",
    "id"=> "309132"
    ),
    "1"=> array(
    "title"=> "myTitle",
    "url"=> "",
    "id"=> "309123",
    )
    )
    );
    
    
    //similar $arr1['products'] 
    
        function cmp($a, $b)
        {
            if ($a["id"] == $b["id"]) {
                return 0;
            }
            return ($a["id"] < $b["id"]) ? -1 : 1;//sorts in decending order by ratings..
        }
        $array['products']=array_merge($arr['products'],$arr1['products']);
        usort($array['products'],"cmp");
        $array['products'] = array_values(array_map("unserialize", array_unique(array_map("serialize", $array['products']))));
        echo '<pre>';
        print_r($array);
    

    DEMO HERE

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?