PHP二维数组去重复2018-12-18 02:18:48

( 3人已投票,[高质量] )
分享:
31.3K

PHP默认的数组去重重有直接的函数可用:

unique_arr($tmpArr);

参数说明:

array   必需。规定数组。  

sortingtype   可选。规定如何比较数组元素/项目。可能的值:

SORT_STRING - 默认。把项目作为字符串来比较。

SORT_REGULAR - 把每一项按常规顺序排列(Standard ASCII,不改变类型)。

SORT_NUMERIC - 把每一项作为数字来处理。

SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。  



但是对于二维数组来说就达不到效果了,该怎么处理呢,直接见下面代码。。。

测试的数组必须是在二维度上完全重复(这里没有处理,将最重要的数据只要是重复了就判断为重复,看我的做法)

function stripMutiple($tmpArr){
$result = array();//save as result for return
foreach($tmpArr as $key=>$value) {
  $bF = false;
  foreach($result as $val){
    if($val[0]==$value[0]){//notice!!!
    $bF = true;
    break;
    }
  }
  if(!$bF)//passed the test
  $result[] = $value;
  //array_push($result,$value);//same affect
}
return $result;
}

其中代码里注意部分,因为我的数组里子数组部分没有key,直接是这样的("orange","tasty","yellow");所以$val[0]的意思是,只要第一个值为orange我就判定为重复,就去除。如果你是这样("id":123,"name":"zhangSam",...)这种带key值的,那么判断语句if的地方就改为:$val["id"]=$value["id"];意思为如果id重复就判断为重复,一样能查出来

如果更复杂,多项内容必须一模一样才算重复,可以将if语句改为

if($val[0]==$value[0] && $val["name"]==$value["name"]){//got it}

这样一样百分百的判断出来,只要判断出来后,就break不用查了,result里面已经有了,boolean型变量的修改就会抛弃掉它。


相信经过我的介绍,你已经可以举一返三了,其实就是两次嵌套遍历,逻辑简单效率还是可以,希望对大家有帮助哦!

PHP二维数组去重复PHP二维数组去重复





头像

snowcoal
  • PHP
  • 二维数组
  • 数组去重复

收藏到我的私密空间

标题:PHP二维数组去重复

作者:柳岸花明

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限

如果本站的内容有幸帮助到了您,建议您了解一下当页的广告内容哦,我们的进步离不开您的支持,Thank you~