ZetCode

PHP array_unique 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_unique 函数用于移除数组中的重复值。它有助于清理数据并确保元素的唯一性。

基本定义

array_unique 函数接收一个数组,并返回一个不包含重复值的新数组。它会保留第一次出现元素的键。

语法:array_unique(array $array, int $flags = SORT_STRING): array。flags 参数控制比较行为(SORT_REGULAR、SORT_NUMERIC)。

基本的 array_unique 示例

这展示了移除数组重复值最简单的用法。

basic_array_unique.php
<?php

$numbers = [1, 2, 2, 3, 4, 4, 5];
$uniqueNumbers = array_unique($numbers);

print_r($uniqueNumbers);

输出:Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )。该函数在保留第一次出现元素及其键的同时移除了重复项。

字符串数组示例

移除数组中的重复字符串,同时保留大小写敏感性。

string_array.php
<?php

$fruits = ["apple", "Apple", "banana", "banana", "orange"];
$uniqueFruits = array_unique($fruits);

print_r($uniqueFruits);

输出:Array ( [0] => apple [1] => Apple [2] => banana [4] => orange )。请注意,“apple”和“Apple”由于大小写敏感而被视为不同。

使用 Flags 参数

演示 flags 参数如何影响比较行为。

flags_parameter.php
<?php

$values = ["10", 10, "20", 20, "30"];
$uniqueRegular = array_unique($values, SORT_REGULAR);
$uniqueString = array_unique($values, SORT_STRING);

echo "SORT_REGULAR: ";
print_r($uniqueRegular);

echo "SORT_STRING: ";
print_r($uniqueString);

SORT_REGULAR 将 "10" 和 10 视为相等(类型转换),而 SORT_STRING 将它们视为不同。根据您的需求选择合适的标志。

关联数组示例

移除关联数组中的重复项,同时保留键。

associative_array.php
<?php

$users = [
    "john" => "admin",
    "jane" => "editor",
    "bob" => "admin",
    "alice" => "viewer"
];

$uniqueRoles = array_unique($users);

print_r($uniqueRoles);

输出:Array ( [john] => admin [jane] => editor [alice] => viewer )。重复的“admin”角色被移除,同时保留了第一次出现。

多维数组挑战

展示多维数组的局限性及一种解决方法。

multidimensional_array.php
<?php

$data = [
    ["id" => 1, "name" => "John"],
    ["id" => 2, "name" => "Jane"],
    ["id" => 1, "name" => "John"],
];

// array_unique won't work directly on multidimensional arrays
$serialized = array_map('serialize', $data);
$unique = array_unique($serialized);
$result = array_map('unserialize', $unique);

print_r($result);

此解决方法通过序列化每个元素进行比较,然后反序列化回来。输出仅显示基于所有属性的唯一对象。

最佳实践

来源

PHP array_unique 文档

本教程通过实际示例介绍了 PHP 的 array_unique 函数,展示了其在移除重复数组值方面的用法。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 PHP 数组函数