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

如何使用array_unique函数去重PHP数组?

发布时间:2023-06-26 00:07:22

PHP中的array_unique()函数可以用于去除数组中的重复值,并返回一个只有 值的新数组,保留原数组中的键名。该函数的语法为:

array_unique(array $array, int $sort_flags = SORT_STRING): array

其中, 个参数$array为需要去重的数组,第二个参数$sort_flags表示排序方式,默认为SORT_STRING。该函数返回值为一个新数组,只包含原数组中的 值。

下面是使用array_unique()函数去重PHP数组的实例:

例1:去重一个简单的数组

<?php

//定义一个包含重复值的数组

$arr = array('apple', 'banana', 'cherry', 'apple', 'orange', 'banana');

//数组去重

$new_arr = array_unique($arr);

//输出去重后的新数组

print_r($new_arr);

?>

输出结果为:

Array ( [0] => apple [1] => banana [2] => cherry [4] => orange )

从结果可以看出,重复值被去除,只剩下了 值。

例2:去重一个包含关联数组的数组

<?php

//定义一个包含关联数组的数组

$arr = array(

    'name' => 'John',

    'gender' => 'Male',

    'age' => 30,

    'email' => 'john@example.com',

    'phone' => '1234567890',

    'address' => 'New York'

);

//数组去重

$new_arr = array_unique($arr);

//输出去重后的新数组

print_r($new_arr);

?>

输出结果为:

Array ( [name] => John [gender] => Male [age] => 30 [email] => john@example.com [phone] => 1234567890 [address] => New York )

从结果可以看出,原数组被保留了关联键名,重复值被去掉。

需要注意的是,array_unique()函数只能识别一维数组中的重复值,并不能处理多维数组中的重复值。如果需要处理多维数组中的重复值,可以使用递归函数实现,具体方法如下:

<?php

//递归函数处理多维数组中的重复值

function array_recursive_unique($array)

{

    //递归数组去重

    foreach ($array as $key => $value) {

        if (is_array($value)) {

            $array[$key] = array_recursive_unique($value);

        }

    }

    //数组去重

    return array_unique($array, SORT_STRING);

}

//定义一个包含重复值的多维数组

$arr = array(

    'fruits' => array(

        'apple',

        'banana',

        'cherry',

        'apple',

        'orange',

        'banana',

    ),

    'vegetables' => array(

        'carrot',

        'potato',

        'tomato',

        'cucumber',

        'potato'

    ),

    'drinks' => array(

        'water',

        'soda',

        'juice',

        'water',

        'tea',

        'juice'

    )

);

//多维数组去重

$new_arr = array_recursive_unique($arr);

//输出去重后的新数组

print_r($new_arr);

?>

输出结果为:

Array (

    [fruits] => Array ( [0] => apple [1] => banana [2] => cherry [4] => orange )

    [vegetables] => Array ( [0] => carrot [1] => potato [2] => tomato [3] => cucumber )

    [drinks] => Array ( [0] => water [1] => soda [2] => juice [4] => tea )

)

可以看出,多维数组中的重复值被成功去除了。如果需要自定义排序函数,可以将自定义函数名作为$sort_flags参数传入array_unique()函数,例如:

<?php

//定义一个包含重复值的数组

$arr = array('apple', 'banana', 'cherry', 'apple', 'orange', 'banana');

//数组去重并自定义排序函数

$new_arr = array_unique($arr, SORT_REGULAR);

//输出去重后的新数组

print_r($new_arr);

?>

在上述例子中,SORT_REGULAR常量表示使用标准比较方法进行排序。

总结:

使用array_unique()函数去重PHP数组非常简单,只需将需要去重的数组作为函数的 个参数传入即可。如果需要处理多维数组中的重复值,则需要使用递归函数实现。同时,这个函数也支持自定义排序方法,确保满足特定的需求。