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

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

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

方法一: array_unique()和array_map()

先来看一下实现代码:

<?php
$arr = Array(
          Array('laravel','php'),
          Array('codeigniter','php'),
          Array('laravel','php'),
          Array('c++','java')
        );
$arr = array_map("unserialize", array_unique(array_map("serialize", $arr)));
print_r($arr);
?>

结果:

Array
(
    [0] => Array
        (
            [0] => laravel
            [1] => php
        )
    [1] => Array
        (
            [0] => codeigniter
            [1] => php
        )
 
    [2] => Array
        (
            [0] => c++
            [1] => java
        )
)

PHP array_map() 函数

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

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

语法:

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

参数详细: 

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

以上代码将输出结果:

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

PHP array_unique() 函数

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

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

返回的数组中键名不变。

语法:

array_unique(array)

参数描述:

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

 以上代码输出结果:

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

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

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

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

得到需要的结果。

方法二:自定义函数法

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

<?php
    function super_unique($array,$key)
    {
       $temp_array = [];
       foreach ($array as &$v) {
           if (!isset($temp_array[$v[$key]]))
           $temp_array[$v[$key]] =& $v;
       }
       $array = array_values($temp_array);
       return $array;

    }

$arr="";
$arr[0]['id']=0;
$arr[0]['titel']="ABC";
$arr[1]['id']=1;
$arr[1]['titel']="DEF";
$arr[2]['id']=2;
$arr[2]['titel']="ABC";
$arr[3]['id']=3;
$arr[3]['titel']="XYZ";

echo "<pre>";
print_r($arr);
echo "unique*********************<br/>";
print_r(super_unique($arr,'titel'));
?>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值