• PHP从多维数组中删除重复的值


    有时,我们需要从PHP的多维数组中删除重复值。在本教程中,我们将讨论如何使用PHP从多维数组中删除重复的值。文章将使用以下2种方法来实现这一需求。

    1. PHP array_unique()和array_map()
    2. 自定义php函数法

    方法一: array_unique()和array_map()

    先来看一下实现代码:

    1. $arr = Array(
    2. Array('laravel','php'),
    3. Array('codeigniter','php'),
    4. Array('laravel','php'),
    5. Array('c++','java')
    6. );
    7. $arr = array_map("unserialize", array_unique(array_map("serialize", $arr)));
    8. print_r($arr);
    9. ?>

    结果:

    1. Array
    2. (
    3. [0] => Array
    4. (
    5. [0] => laravel
    6. [1] => php
    7. )
    8. [1] => Array
    9. (
    10. [0] => codeigniter
    11. [1] => php
    12. )
    13. [2] => Array
    14. (
    15. [0] => c++
    16. [1] => java
    17. )
    18. )

    PHP array_map() 函数

    array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。

    提示:您可以向函数输入一个或者多个数组。

    语法:

    array_map(myfunction,array1,array2,array3...)

    参数详细: 

    参数描述
    myfunction必需。用户自定义函数的名称,或者是 null。
    array1必需。规定数组。
    array2可选。规定数组。
    array3可选。规定数组。
    array_map("serialize", $arr))

    以上代码将输出结果:

    1. Array
    2. (
    3. [0] => a:2:{i:0;s:7:"laravel";i:1;s:3:"php";}
    4. [1] => a:2:{i:0;s:11:"codeigniter";i:1;s:3:"php";}
    5. [2] => a:2:{i:0;s:7:"laravel";i:1;s:3:"php";}
    6. [3] => a:2:{i:0;s:3:"c++";i:1;s:4:"java";}
    7. )

    PHP array_unique() 函数

    array_unique() 函数移除数组中的重复的值,并返回结果数组。

    当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。

    返回的数组中键名不变。

    语法:

    array_unique(array)

    参数描述:

    参数描述
    array必需。规定输入的数组。
    array_unique(array_map("serialize", $arr))

     以上代码输出结果:

    1. Array
    2. (
    3. [0] => a:2:{i:0;s:7:"laravel";i:1;s:3:"php";}
    4. [1] => a:2:{i:0;s:11:"codeigniter";i:1;s:3:"php";}
    5. [3] => a:2:{i:0;s:3:"c++";i:1;s:4:"java";}
    6. )

    我们可以看到重复值已经被删除。

    然后再次使用array_map() 函数将数组还原。

    array_map("unserialize", array_unique(array_map("serialize", $arr)));

    得到需要的结果。

    方法二:自定义函数法

    你可以使用一下函数来删除多维数组中重复的值。

    1. function super_unique($array,$key)
    2. {
    3. $temp_array = [];
    4. foreach ($array as &$v) {
    5. if (!isset($temp_array[$v[$key]]))
    6. $temp_array[$v[$key]] =& $v;
    7. }
    8. $array = array_values($temp_array);
    9. return $array;
    10. }
    11. $arr="";
    12. $arr[0]['id']=0;
    13. $arr[0]['titel']="ABC";
    14. $arr[1]['id']=1;
    15. $arr[1]['titel']="DEF";
    16. $arr[2]['id']=2;
    17. $arr[2]['titel']="ABC";
    18. $arr[3]['id']=3;
    19. $arr[3]['titel']="XYZ";
    20. echo "
      ";
    21. print_r($arr);
    22. echo "unique*********************
      "
      ;
    23. print_r(super_unique($arr,'titel'));
    24. ?>

    以上是本文的全部类容,感谢阅读,希望能帮到大家。更多教程请访问码农之家    

  • 相关阅读:
    从底层看 Redis 的五种数据类型
    重学c#系列——动态类型[二十二]
    集成学习进阶
    2023亚太杯数学建模思路 - 案例:FPTree-频繁模式树算法
    【前端】JavaScript-DOM基础1
    Elastic Stack从入门到实践(一)--Elastic Stack入门(3)--Logstash入门与Elastic Stack实战
    HTML5期末考核大作业——学生网页设计作业源码HTML+CSS+JavaScript 中华美德6页面带音乐文化
    Spring源码-4.Aware接口、初始化和销毁执行顺序、Scope域
    RPA在票据处理中的应用
    Java类和对象(二)
  • 原文地址:https://blog.csdn.net/wuxiaopengnihao1/article/details/126502183