PHP从多维数组中删除重复的值
有时,我们需要从PHP的多维数组中删除重复值。在本教程中,我们将讨论如何使用PHP从多维数组中删除重复的值。文章将使用以下2种方法来实现这一需求。
- PHP array_unique()和array_map()
- 自定义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'));
?>
以上就是本文的全部内容,希望对大家的学习有所帮助。更多教程请访问码农之家