php 数组去重 (一维数组与二维数组)

数组中重复项的去除

一维数组的重复项

使用array_unique函数即可,使用实例如下:

<?php
                   $aa=array("apple","banana","pear","apple","wail","watermalon");
                   $bb=array_unique($aa);
                   print_r($bb);
                ?>

结果如下:Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。

二维数组的重复项

对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

<?php
            function assoc_unique($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]);
                }
              else {
                  $tmp_arr[] = $v[$key];
                }
              }
            sort($arr); //sort函数对数组进行排序
            return $arr;
            }

$aa = array(
            array(‘id‘ => 123, ‘name‘ => ‘张三‘),
            array(‘id‘ => 123, ‘name‘ => ‘李四‘),
            array(‘id‘ => 124, ‘name‘ => ‘王五‘),
            array(‘id‘ => 125, ‘name‘ => ‘赵六‘),
            array(‘id‘ => 126, ‘name‘ => ‘赵六‘)
            );
            $key = ‘id‘;
            assoc_unique(&$aa, $key);
            print_r($aa);
            ?>

显示结果为:Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

㈡因内部的一维数组不能完全相同,而删除重复项

<?php
            function array_unique_fb($array2D){
                 foreach ($array2D as $v){
                     $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
                     $temp[] = $v;
                 }
                 $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
                foreach ($temp as $k => $v){
                    $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
                }
                return $temp;
            }

$aa = array(
            array(‘id‘ => 123, ‘name‘ => ‘张三‘),
            array(‘id‘ => 123, ‘name‘ => ‘李四‘),
            array(‘id‘ => 124, ‘name‘ => ‘王五‘),
            array(‘id‘ => 123, ‘name‘ => ‘李四‘),
            array(‘id‘ => 126, ‘name‘ => ‘赵六‘)
            );
            $bb=array_unique_fb($aa);
            print_r($bb)
            ?>

显示结果:Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )

转载自:http://www.cnblogs.com/srsee/archive/2013/05/09/srsee.html

时间: 2024-08-10 00:03:35

php 数组去重 (一维数组与二维数组)的相关文章

将树形结构的数组按照顺序遍历为二维数组

/** * 将树形结构的数组按照顺序遍历为二维数组 * renxing,2015年8月7日 11:06:47 */ function arr_child ($array) { static $res; if (!is_array($array)) { return false; } foreach ($array as $k=>$v) { if (is_array($v) && isset($v['child'])) { $child = $v['child']; //将这个数组的子

稀疏数组的经典应用(二维数组与稀疏数组的相互转换)

package com.zhangwl.数据结构.稀疏数组; /** * @ClassName SparseArray * @Description 棋盘游戏演示 * @Author zhangwl * @Date 2019/10/10 22:54 * @Version 1.0 **/public class SparseArray { public static void main(String[] args) { /*创建一个原始的二维数组11 * 11 ,0:表示没有棋子 :1:表示黑子:

一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省

<span style="font-size:14px;">#include<stdio.h> #include<stdlib.h> //二维数组赋值 void show2() { int a[3][4]; int k=0; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { a[i][j]=i*4+(j+1);//数学公式 赋值 // a[i][j]= ++k;//与上面效果一致 printf(&

c语言中二维数组作函数参数以及二维数组的理解

当二维数组作函数参数接受主调函数中的二维数组时,退化为一个指向数组的指针. 在此引用<c与指针>中的观点:作为函数 参数的多位数组名的穿递方式和一维数组名相同--实际传递的是个指向数组第一个元素的指针.但是,两者之间的区别在于, 多维数组的每个元素本身是另外一个数组,编译器需要知道它的维数,以便为函数形参的下标表达式进行求值.

Unit06: 数组的常用方法_2 、 二维数组 、 String_1

1.数组API 数组=数据+操作数据的API 1. 数组 to String:2种: var str=arr.toString(); -->输出数组中的内容,每个元素用逗号分隔 -->自动调用 var str=arr.join("连接符") ******* -->输出数组中的内容,自定义元素间连接符 批量操作页面元素时,可以用join拼接成innerHTML,一次性修改 何时使用:2种固定套路 1. 将字符组成单词:arr.join("") 2.

数组问题 1.行列有序二维数组中查找2.在一组数成对出现的数中有两个数只出现一次3.在移位数组中查找一个数

一.在一个二维数组中,每一行都按从左到右递增的顺序排序,每一列都按从上到下的递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 首先选取数组中右上角的数字.如果该数字等于要查找的的数字,查找过程结束:如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行.也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围剔除一行或一列,这样每一步都可以缩小查找的范围. 实现过程如下: 运行结果如下:

十、数组(2):二维数组

1.什么是二维数组? int a[3][5]; 通常理解为a是一个3行5列的矩阵. 2.二维数组的遍历 for( i=0;i<3;i++ ){ for( j=0; j<5;j++){ a[i][j]=i*j; } } --a[i][j]是一个int --表示第i行第j列上的单元. 3.二维数组的初始化 int a[ ][5] = { {0,1,2,3,4}, {2,3,4,5,6}, }; --列数是必须给出的,行数可以由编译器来数 --每行一个{},逗号分隔 --最后的逗号可以存在,有古老的

php显示判断数组是不是带下标的二维数组

1,代码: <?php header("Content-type:text/html;charset=utf-8"); function va($value){     echo "<pre>";     var_dump($value);     echo "</pre>"; } function edump($value){     va($value);     exit(); } function jdump

JAVA的 一维数组、二维数组、三维数组、多维数组等。

这个数组可以看做新手学习,从一维数组 到 多维 数组 循环渐进,其实看起也很简单,一看便知,众所周知,一维.二维或许经常用到,用到二维以上应该就很少了. public class test { public static void main(String[] args) { /*一维数组*/ int num[] = {0,1,2}; /*下面输出 3 行数据,0 ~ 2*/ for (int i = 0; i < num.length; i++) { System.out.println("

一维数组复习,二维数组与多维数组

输入班级人数,输入每个人的分数,求班级最高分,最低分,以及去掉两个最高分并且去掉两个最低分之后的所有人员的平均分. 输入班级人数,输入一个人名,输入一个分数.求班级最高分是多少,是谁的分数(注意姓名跟分数对应) 运用两个一维数组: 运用一个一维数组: 一个元素是一个点,一维数组是一条线,二维数组是一个面,三维数组是一个立体. 二维数组: int [,]array=new int[3,2]{ {1,2}, {2,3}, {3,4} }; 其中3表示有三个一维数组,2表示每个一维数组中有两个元素.