php 数组去重,一维数组去重,二维数组去重

php 数组去重

一维数组

方法1:

array_unique($mobile_array);

方法2:

$mobile_array = array_flip($mobile_array);
$mobile_array = array_keys($mobile_array);

两方法比较

对于批量来说 后者效率更高,前者用起来挺方便

二维数组

没有现成的方法,用以下方法处理下

/**
 * 二位数组去除重复值
 * @param $arr 传入数组
 * @param $key 判断的key值
 * @return array
 */
function array_unset($arr,$key){   //$arr->传入数组   $key->判断的key值
    //建立一个目标数组
    $res = array();
    foreach ($arr as $value) {
        //查看有没有重复项
        if(isset($res[$value[$key]])){
            //有:销毁
            unset($value[$key]);
        }else{
            $res[$value[$key]] = $value;
        }
    }
    return $res;
}

 

 

 

二维数组去重另外一种方法

 

最近用到了一个获取历史会议列表的问题,需要去这个多维数组去重后返回返回给客户端,这里使用了几个php的组装函数,分享下,示例代码如下:

 

$str = '{
    "status": 0,
    "result": [
        {
            "hostName": "杨新",
            "pcode2": "41675441",
            "email": "xin.yang@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "杨新",
            "pcode2": "41675441",
            "email": "xin.yang@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "中信国安科技控股有限公司",
            "pcode2": "9730284461",
            "email": "liuxiao@gakj.xx.com",
            "selfName": "邵兵"
        },
        {
            "hostName": "中信国安科技控股有限公司",
            "pcode2": "9730284461",
            "email": "liuxiao@gakj.xx.com",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘惠",
            "pcode2": "64068956",
            "email": "huijie.liu@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘惠",
            "pcode2": "64068956",
            "email": "huijie.liu@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘凯南",
            "pcode2": "14818360",
            "email": "kainan.liu_3@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘凯南",
            "pcode2": "14818360",
            "email": "kainan.liu_3@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "宋纬奇",
            "pcode2": "62947142",
            "email": "weiqi.song@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "宋纬奇",
            "pcode2": "62947142",
            "email": "weiqi.song@xx.cn",
            "selfName": "邵兵"
        }
    ],
    "content_type": "application/json"
}';


$res = json_decode($str, true);

echo 'num: ' . count($res['result']);

print_r($res['result']);
echo "</br></br></br>";
$rrr = $res['result'];

$serializeArrs = array_map('serialize', $rrr);

$uniqueArrs = array_unique($serializeArrs);

$unserializeArrs = array_map('unserialize', $uniqueArrs);

print_r($unserializeArrs);
echo "</br></br></br>";
echo json_encode($unserializeArrs);

 

 

关于php的序列化的确是几年前才使用的技术,目前大家更多的是使用json_encode,且后者效率也比php的序列化高。

序列化也还是很有用的。上面的例子中主要是函数array_map()和array_unique()的结合使用。

 

 

 

转载于:https://my.oschina.net/osgrace/blog/1334991

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值