PHP函数之array_unique():用法及示例
array_unique()是PHP中一个非常常用的函数,它的作用是去除数组中的重复元素,并返回去重后的新数组。本文将详细介绍array_unique()的用法及示例。
1. 基本用法
array_unique()的基本用法非常简单,只需要传入一个数组作为参数,就可以返回新的去重后的数组。
语法:array_unique(array $array[, int $sort_flags = SORT_STRING])
参数:
- $array:必须,要去重的数组。
- $sort_flags:可选,排序标志。默认为SORT_STRING,表示按照字符串顺序排序。如果不排序可以设置为SORT_REGULAR。
返回值:
- 返回去重后的新数组,如果输入的数组为空则返回空数组。
示例:
$array = array(1, 2, 3, 2, 4, 5, 4); $unique_array = array_unique($array); print_r($unique_array);
输出结果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[4] => 4
[5] => 5
)
2. 按照键值去重
默认情况下,array_unique()函数是按照值去重的,如果想按照键去重该怎么做呢?可以使用array_unique()的另一个版本 - array_unique_key()。
示例:
function array_unique_key($array){
$new_array = array();
foreach ($array as $k=>$v){
if(!isset($new_array[$v])){
$new_array[$v] = $k;
}
}
return $new_array;
}
$array = array('a'=>1, 'b'=>2, 'c'=>1, 'd'=>3);
$unique_array = array_unique_key($array);
print_r($unique_array);
输出结果:
Array
(
[1] => a
[2] => b
[3] => d
)
3. 带键名去重
有时候我们想带键名去重,即如果存在相同值但不同键名的元素也过滤掉。这个需求可以使用array_unique()和array_intersect_key()函数结合实现。
示例:
$array = array(
'a' => 'apple',
'b' => 'banana',
'c' => 'apple',
'd' => 'orange'
);
$unique_array = array_unique($array);
$intersect_array = array_intersect_key($array, $unique_array);
print_r($intersect_array);
输出结果:
Array
(
[a] => apple
[b] => banana
[d] => orange
)
4. 去除重复的多维数组
只使用array_unique()函数无法去除多维数组中的重复元素,可以结合使用array_map()函数和json_encode()函数实现。该方法的原理是:将多维数组中的每个子数组转化成json字符串,然后用set去重,最后再转回数组格式。
示例:
$array = array(
array('name' => 'Tom', 'age'=> 18),
array('name' => 'Jerry', 'age'=> 20),
array('name' => 'Tom', 'age'=> 18)
);
$unique_array = array_map("json_decode", array_unique(array_map("json_encode", $array)));
print_r($unique_array);
输出结果:
Array
(
[0] => stdClass Object
(
[name] => Tom
[age] => 18
)
[1] => stdClass Object
(
[name] => Jerry
[age] => 20
)
)
5. 去重后保留键名
如果要保留键名去重可以考虑使用PHP的数组函数array_flip()。
示例:
$array = array(
'a' => 'orange',
'b' => 'banana',
'c' => 'orange',
'd' => 'apple'
);
$unique_array = array_flip(array_flip($array));
print_r($unique_array);
输出结果:
Array
(
[a] => orange
[b] => banana
[d] => apple
)
以上就是array_unique()函数的用法及示例。通过学习本文,相信你已经掌握了array_unique()的使用方法。
