zoukankan      html  css  js  c++  java
  • PHP使用array_unique对二维数组去重处理

    array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。

     

    php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数

    一维数组的重复项:

    使用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 ) 。

    二维数组去重项

    代码如下 复制代码

    例如:

    $result = array(
    
    0=>array('a'=>1,'b'=>'Hello'),
    
    1=>array('a'=>1,'b'=>'other'),
    
    2=>array('a'=>1,'b'=>'other'),
    
    );

    处理成

    $result = array(
    
    0=>array('a'=>1,'b'=>'Hello'),
    
    1=>array('a'=>1,'b'=>'other') 
    
    );

    使用方法

    array_unique($result, SORT_REGULAR);

    二维数组的重复项:

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

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

    PHP

    代码如下 复制代码

    <?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] => 赵六 ) )

    原文:https://www.php.cn/php-sourcecode-284972.html

    array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。

     

    php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数

    一维数组的重复项:

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

    代码如下 复制代码

    1

    2

    3

    4

    5

    <?php

    $aa = array("apple", "banana", "pear", "apple", "wail", "watermalon");

    $bb = array_unique($aa);

    print_r($bb);

    ?>

    结果如下:

    1

    Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。

    二维数组去重项

    代码如下 复制代码

    例如:

    1

    2

    3

    4

    5

    $result = array(

    0=>array('a'=>1,'b'=>'Hello'),

    1=>array('a'=>1,'b'=>'other'),

    2=>array('a'=>1,'b'=>'other'),

    );

    处理成

    1

    2

    3

    4

    $result = array(

    0=>array('a'=>1,'b'=>'Hello'),

    1=>array('a'=>1,'b'=>'other')

    );

    使用方法

    1

    array_unique($result, SORT_REGULAR);

    二维数组的重复项:

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

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

    PHP

    代码如下 复制代码

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    <?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);

    ?>

    显示结果为:

    1

    Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

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

    代码如下 复制代码

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    <?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)

    ?>

    显示结果:

    1

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

  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/T8888/p/12794218.html
Copyright © 2011-2022 走看看