1. <?php
  2. //二维数组
  3. $test["aa"] = array("id"=>"17","name"=>"汽车");
  4. $test["bb"] = array("id"=>"18","name"=>"飞机");
  5. $test["cc"] = array("id"=>"19","name"=>"高铁");
  6. $test["dd"] = array("id"=>"19","name"=>"飞机");
  7.  
  8. //去除二维数组重复值,默认重复保留前面的值
  9. /*
  10. *array 二维数组
  11. *keyid 需要判断是否重复的项目
  12. *desc 为true时保留后面的
  13. */
  14. function array_repeat($array,$keyid="id",$desc=false)
  15. {
  16. $array = array_values($array);
  17. //倒叙排列数
  18. if($desc)
  19. {
  20. $array = array_rsort($array,true);
  21. }
  22.  
  23. //提取需要判断的项目变成一维数组
  24. $a = array_tq($array,$keyid);
  25.  
  26. //去除一维数组重复值
  27. $a = array_unique($a);
  28. //提取二维数组项目值
  29. foreach($array[0] AS $key=>$value)
  30. {
  31. $akey[] = $key;
  32. }
  33. //重新拼接二维数组
  34. foreach($akey AS $key=>$value)
  35. {
  36. $b = array_tq($array,$value);
  37. foreach($a AS $key2=>$value2)
  38. {
  39. $c[$key2][$value] = $b[$key2];
  40. }
  41. }
  42.  
  43. if($desc)
  44. {
  45. $c = array_rsort($c,true);
  46. }
  47. return $c;
  48. }
  49.  
  50. //数组倒叙
  51. function array_rsort($arr,$isvalues=false)
  52. {
  53. if(is_array($arr)){
  54. $flag = false;
  55. //一维数组
  56. if(count($arr) == count($arr,1)){
  57. $flag = true;
  58. $i = 0;
  59. //转换成二维数组
  60. foreach($arr AS $key=>$value){
  61. $a[$i]["okey"] = $key;
  62. $a[$i]["value"] = $value;
  63. $i++;
  64. }
  65. $arr = $a;
  66. }
  67. //多维数组
  68. else
  69. {
  70. //添加临时key值
  71. foreach($arr AS $key=>$value){
  72. $value["okey"] = $key;
  73. $array[] = $value;
  74. }
  75. $arr = $array;
  76. }
  77.  
  78. //倒叙并还原key值
  79. $count = count($arr)-1;
  80. for($i=0;$i<count($arr);$i++){
  81. $b[$arr[$count]["okey"]] = $arr[$count];
  82. $count--;
  83. }
  84.  
  85. //重构一维数组
  86. if($flag == true){
  87. foreach($b AS $key=>$value){
  88. if($isvalues){
  89. $c[] = $value["value"];
  90. }else{
  91. $c[$value["okey"]] = $value["value"];
  92. }
  93. }
  94. }
  95. //多维数组去除临时key值
  96. else
  97. {
  98. foreach($b AS $key=>$value) {
  99. unset($value["okey"]);
  100. if($isvalues){
  101. $c[] = $value;
  102. }else{
  103. $c[$key] = $value;
  104. }
  105. }
  106. }
  107. return $c;
  108. }
  109. }
  110.  
  111. //提取二维数组项目
  112. function array_tq($array,$aval="")
  113. {
  114. foreach($array AS $key=>$value)
  115. {
  116. $result[] = $value[$aval];
  117. }
  118. return $result;
  119. }
  120.  
  121. //去除id相同的项
  122. var_dump(array_repeat($test,"id"));
  123. var_dump(array_repeat($test,"id",true));
  124.  
  125. echo "----------------------------------------";
  126.  
  127. //去除name相同的项
  128. var_dump(array_repeat($test,"name"));
  129. var_dump(array_repeat($test,"name",true));
  130. ?>

  

php二维数组去除重复值的更多相关文章

  1. 二维数组去除重复值和array_unique函数

    今天遇到了一个问题,就是从数据库中去除的数组为一个二维数组,现在就是想将二位数组进行去重,但是在php中,对于一个一维数组,我们可以直接使用php的系统函数array_unique,但是这个函数不能对 ...

  2. PHP 二维数组去掉重复值并保持原结构

    PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...

  3. PHP二维数组去除重复,重复值相加

    $arr = array( array('id' => 122, 'name' => '张三', 'amount' => '1'), array('id' => 123, 'n ...

  4. PHP 按二维数组的键值排序

    /** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...

  5. 使用一个for循环将N*N的二维数组的所有值置1

    <?php // 使用一个for循环将N*N的二维数组的所有值置1 $n = ; $a = []; ;$i<$n*$n;$i++){ $a[$i/$n][$i%$n] = ; } prin ...

  6. PHP二维数组按照键值排序

    在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...

  7. PHP二维数组--去除指定列含有重复项的数组

    给定二维数组: $arr = array( '0' => array('张三',2,3,4), '1' => array('李四',2,3,4), '2' => array('张三' ...

  8. php如何去掉二维数组中重复的元素?

    $arr=array("=>array("a","b")); 我想得到的结果是:只输出第一项(第一项和第三项相同,去第一项)和第二项这个怎么解决 ...

  9. php 二维数组验证一个值是否存在

    php 判断数字在二维数组里 $arr = array( array('a', 'b'), array('c', 'd') ); in_array('a', $arr); // 此时返回的永远都是 f ...

随机推荐

  1. pycharm git工具与coding.net结合

    前提:coding.net中的项目是私密项目 问题描述:在使用pycharm自带的git工具clone(或者push)代码时出现 错误如下:Push failed: Failed with error ...

  2. Shachar Fleishma的论文,做点云重建的几篇论文都不错

    http://www.sci.utah.edu/~shachar/ 几篇论文都不错,但貌似05年之后就没有什么动作了.

  3. 手把手教你使用node-inspector调试nodejs

    最近再看nodejs,这个东西是运行在服务端的,也就是说我们在客户端看不到相应的js代码,那么怎么调试了?目前主流的方法有三种.第一是采用node-inspector.第二种采用nodejs内置的调试 ...

  4. Oracle11gR2--手工建库&dbca建库

    1 Oracle11gR2 dbca建库 [oracle@localhost ~]$ cd $ORACLE_BASE/database [oracle@localhost database]$ dbc ...

  5. RocketMQ入门(简介、特点)

    简介: RocketMQ作为一款纯java.分布式.队列模型的开源消息中间件,支持事务消息.顺序消息.批量消息.定时消息.消息回溯等. 发展历程: 1. Metaq(Metamorphosis) 1. ...

  6. 运维自动化工具 Cobbler

    简介: 关于操作系统安装方面的自动化,早前我们使用 RedHat 推出的 Kickstart 来批量安装操作系统,近年来 RedHat 又推出一个 Cobbler . Cobbler 使用 Pytho ...

  7. angularjs学习访问服务器(5)

    (1) 后台AngularController.java代码 package com.amy.controller; import java.util.ArrayList; import java.u ...

  8. SPI子系统分析之四:驱动模块

    内核版本:3.9.5 SPI控制器层(平台相关) 上一节讲了SPI核心层的注册和匹配函数,它是平台无关的.正是在核心层抽象了SPI控制器层的相同部分然后提供了统一的API给SPI设备层来使用.我们这一 ...

  9. python的 pep8 规范(看完你会感谢我的!!!)

    1 缩进与换行 每级缩进使用四个空格 2 限制每行的最大长度为79个字符 3 空行 顶层函数和类之间使用两个空行 类的方法之间用一个空行 在函数中使用空行表示不同逻辑段落 4 导入位于文件的顶部 5 ...

  10. Madgwick算法详细解读

    Madgwick算法详细解读 极品巧克力 前言 接上一篇文章<Google Cardboard的九轴融合算法>. Madgwick算法是另外一种九轴融合的方法,广泛应用在旋翼飞行器上,效果 ...