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 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,