PHP编程快速实现数组去重的方法详解_php技巧_脚本
分类:计算机编程

正文实例陈述了PHP编制程序达成多维数组依据某些键值排序的方法。共享给大家供大家仿效,具体如下:

PHP二维数组实现去除重复项的主意【保留各样键值】,php二维数组

本文实例陈诉了PHP二维数组完成去除重复项的艺术。分享给我们供大家参照他事他说加以考查,具体如下:

对此如下二维数组,必要对其开展去重:

$arr = array(
     '0'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     '1'=>array(
          'name'=>'susu',
          'age'=>26,
          ),
     '2'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     'new'=>array(
          'name'=>'kube',
          'age'=>37,
          ),
     'list'=>array(
          'name'=>'kube',
          'age'=>27,
          ),
     );

1、 二维数组内部的风度翩翩维数组中的值不可能完全相符,删除当中重复的项:

代码如下:

<?php
$arr = array(
     '0'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     '1'=>array(
          'name'=>'susu',
          'age'=>26,
          ),
      '2'=>array(
          'name'=>'james',
          'age'=>30,
          ),
      'new'=>array(
          'name'=>'kube',
          'age'=>37,
          ),
      'list'=>array(
          'name'=>'kube',
          'age'=>27,
          ),
      );
printf("Before tranform the array:<br>");  //输出原来的数组
print_r($arr);
echo "<br/>";
function more_array_unique($arr=array()){
  foreach($arr[0] as $k => $v){
    $arr_inner_key[]= $k;  //先把二维数组中的内层数组的键值记录在在一维数组中
  }
  foreach ($arras $k => $v){
    $v =join(",",$v);  //降维 用implode()也行
    $temp[$k] =$v;   //保留原来的键值 $temp[]即为不保留原来键值
  }
  printf("After split the array:<br>");
  print_r($temp);  //输出拆分后的数组
  echo"<br/>";
  $temp =array_unique($temp);  //去重:去掉重复的字符串
  foreach ($tempas $k => $v){
    $a = explode(",",$v);  //拆分后的重组 如:Array( [0] => james [1] => 30 )
    $arr_after[$k]= array_combine($arr_inner_key,$a); //将原来的键与值重新合并
  }
  //ksort($arr_after);//排序如需要:ksort对数组进行排序(保留原键值key) ,sort为不保留key值
  return$arr_after;
}
$arr_new = more_array_unique($arr); //调用去重函数
printf("Duplicate removal of the array:<br>");
print_r($arr_new);
echo "<br/>";
?>

输出结果:

Before tranform the array:  //原来数组
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [2] => Array ( [name] => james [age]=> 30 ) [new] => Array ( [name] => kube [age] => 37 ) [list] =>Array ( [name] => kube [age] => 27 ) )
After split the array: //拆分后数组
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
Duplicate removal of thearray: //去重后数组
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2、 二维数组内部的生龙活虎维数组因某八个键值不可能平等,删除重复项:

本着某三个键值来拓宽去重

<?php
$arr= array(……); //同上的二维数组
functionsecond_array_unique_bykey($arr, $key){
  $tmp_arr = array();
  foreach($arr as $k => $v)
  {
    if(in_array($v[$key], $tmp_arr))  //搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
    {
      unset($arr[$k]); //销毁一个变量 如果$tmp_arr中已存在相同的值就删除该值
    }
    else {
      $tmp_arr[$k] = $v[$key]; //将不同的值放在该数组中保存
    }
  }
  //ksort($arr); //ksort函数对数组进行排序(保留原键值key) sort为不保留key值
  return $arr;
  }
  $key ='name';
  $arr_key = second_array_unique_bykey($arr,$key);
  printf("As for the givenkey->%s:<br>",$key);
  print_r($arr_key);
  echo "<br/>";
?>

输出结果:

As for the given key->name:
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) )

PS:本站还大概有六款比较容易实用的在线文本去重新工具,推荐给大家使用:

在线去除重复项工具:

在线文本去重新工具:

越来越多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array卡塔尔(英语:State of Qatar)操作手艺大全》、《PHP常用遍历算法与本事计算》、《php字符串(string卡塔尔国用法总计》、《php常用函数与工夫计算》、《PHP错误与那么些管理措施总计》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php mysql数据库操作入门教程》及《php司空见惯数据库操作才能汇总》

希望本文所述对我们PHP程序设计具备利于。

本文实例陈诉了PHP二维数组达成去除重复项的主意。分享给大家供大家参...

本文实例汇报了PHP编制程序急忙达成数组去重的不二秘诀。分享给大家供大家参谋,具体如下:

达成对多维数组遵照某些键值排序的三种缓慢解决措施(array_multisortarray_sort):

概述

第一种:

使用PHP的array_unique()函数允许你传递五个数组,然后移除重复的值,再次来到叁个享有唯风度翩翩值的数组。那几个函数大非常多情景下都能做事得很好。但是,如若您尝试在一个大的数组里使用array_unique()函数,它会运作地慢一些。

array_multisort()函数对八个数组或多维数组实行排序。

有多少个相比较好还要更加快的函数array_flip()来代替利用array_unique()函数来创制唯风姿罗曼蒂克的数组。那几个法力般的函数会交流数组里面每二个因素的键和值,因为键值必需唯后生可畏,由此,你会收获跟array_unique()函数相似的结果。

//对数组$hotcat按照count键值大小降序进行排序;$hotcat =array( array('1501'=>array('catid'=>'1546','catname'=>'数组排序 一级','count'=>'588')), array('1501'=>array('catid'=>'1546','catname'=>'数组排序二级','count'=>'588')), array('1501'=>array('catid'=>'1546','catname'=>'数组排序 三级','count'=>'588')));//提取列数组;foreach ($hotcat as $key => $val) { $tmp[$key] = $row['username'];}array_multisort($tmp,SORT_DESC,$hotcat);此处对数组进行降序排列;SORT_DESC按降序排列

更加快的方式得以完毕PHP数组去重

第二种:

/* 创建一个包含重复值的,一共四个元素的数组 */$array = array('green','blue','orange','blue');/* 翻转数组,你将会得到唯一键值的数组array('green'=>0,'blue'=>1,'orange'=>2); */$array = array_flip;/* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>'green',1=>'blue',2=>'orange'); */$array = array_flip;

自定义方法array_sort()拓宽排序

因为大家早就移除了有的要素,因此数组看起来不是常规的类别。比方大家大概会赢得:

//指定数组以$keys键值排序function array_sort($array,$keys,$type='asc'){//$array为要排序的数组,$keys为要用来排序的键名,$type默认为升序排序$keysvalue = $new_array = array();foreach {$keysvalue[$k] = $v[$keys];}if{asort;}else{arsort;}reset;foreach {$new_array[$k] = $array[$k];}return $new_array;}$hot_cat = array_sort($hot_cat,'count','desc'); //此处对数组进行降序排列
array;

温和提示:由上图可以看到第生龙活虎种艺术有个缺欠,纵然您的数组如若是字符串键老马被保留,然则数字键将被重新索引,从0初叶,并以1递增。所以当数组排序之后还要须要保留早前的装有键名的话,那就引入应用第三种方法.

在有个别情状下,那不是叁个标题,可是即使您须求数组的键值保持数字的连串,你能够动用意气风发到二种艺术化解键值乱序的标题。

PS:这里再为咱们推荐2款相比较实用的有关在线排序工具供大家仿照效法使用:

使用array_merge修复数组的keys

在线钟爱大利共和国语根据首字母排序工具:

添加array_flip之后的函数,将会对数组的键值排序况兼让它们复苏到符合规律的行列,如:0,1,2,3…

在线文本倒序翻转排序工具:

$array = array('green','blue','orange','blue');$array = array_flip;$array = array_flip;/* 使用array_merge()函数修复键值*/$array = array_merge;

越多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《PHP数组操作技艺大全》、《php字符串用法总计》、《php常用函数与本事计算》、《PHP错误与极度管理办法计算》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php mysql数据库操作入门教程》及《php司空见惯数据库操作工夫汇总》

其次种格局,使用array_keys

盼望本文所述对大家PHP程序设计具备利于。

瞩目,这种修复数组键值的方法比使用array_merge()函数微微快了少数。你也得以在最终一步结合使用array_keys()函数。然后当您翻转数组的值,键值就能够基于各样创立。

$array = array('green','blue','orange','blue');$array = array_flip;/* 跟第一个例子一样,但是现在我们先提取数组的键值 */$array = array_keys;

PS:本站还只怕有七款比较容易实用的在线文本去重新工具,推荐给大家使用:

在线去除重复项工具:

在线文本去重新工具:

愈来愈多关于PHP相关内容感兴趣的读者可查看本站专项论题:《PHP数组操作技巧大全》、《PHP常用遍历算法与技艺总结》、《php字符串用法总括》、《php常用函数与本事总计》、《PHP错误与丰盛管理办法总括》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php mysql数据库操作入门教程》及《php司空见惯数据库操作本事汇总》

希望本文所述对我们PHP程序设计有着支持。

本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:PHP编程快速实现数组去重的方法详解_php技巧_脚本

上一篇:NET中动用SMTP发送邮件,Java发送邮件 下一篇:没有了
猜你喜欢
热门排行
精彩图文