php 之数组去重

一、array_unique()函数

使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组。这个函数大多数情况下都能工作得很好。但是,如果你尝试在一个大的数组里使用array_unique()函数,它会运行地慢一些。
 

二、array_flip()
有一个比较好而且更快的函数array_flip()来替代使用array_unique()函数来创建唯一的数组。这个魔法般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟array_unique()函数一样的结果。


更快的方式实现PHP数组去重

$array = array_flip(array_flip($array));

 /* 使用array_merge()函数修复键值*/


    $array = array_merge($array);

 

 

三、使用array_keys()

注意,这种修复数组键值的方法比使用array_merge()函数稍微快了一点。你也可以在最后一步结合使用array_keys()函数(此函数返回翻转后的值)。然后当你翻转数组的值,键值就会根据顺序创建。

 $array = array_flip($array);


    /* 跟第一个例子一样,但是现在我们先提取数组的键值 */


    $array = array_keys($array);

 

四、自定义函数

/**

          * 删除二维数组中相同项的数据,(一般用于数据库查询结果中相同记录的去重操作)

          *

          * @param array $_2d_array 二维数组,类似:

          *     $tmpArr = array(

          *         array('id' => 1, 'value' => '15046f5de5bb708e'),

          *         array('id' => 1, 'value' => '15046f5de5bb708e'),

          *     );

          * @param string $unique_key 表示上述数组的 "id" 键,或者 "value" 键

          *

          * @return mixed

          */

         function unique_2d_array_by_key($_2d_array, $unique_key) {

                   $tmp_key[] = array();

                   foreach ($_2d_array as $key => &$item) {

                            if ( is_array($item) && isset($item[$unique_key]) ) {

                                     if ( in_array($item[$unique_key], $tmp_key) ) {

                                               unset($_2d_array[$key]);

                                     } else {

                                               $tmp_key[] = $item[$unique_key];

                                     }

                            }

                   }

                   return $_2d_array;

         }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值