欢迎访问宙启技术站
智能推送

PHP函数之array_unique():用法及示例

发布时间:2023-06-05 16:51:00

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()的使用方法。