插件窝 干货文章 PHP数组去重如何处理不同大小写的字符串

PHP数组去重如何处理不同大小写的字符串

array Banana Apple 数组 489    来源:    2025-03-16

在PHP中,如果你需要对数组中的字符串进行去重,并且希望忽略大小写的差异,可以使用以下几种方法:

方法1:使用 array_maparray_unique

你可以先将数组中的所有字符串转换为统一的大小写(例如全部转换为小写),然后使用 array_unique 函数去重。

$array = ["Apple", "apple", "Banana", "banana", "Orange"];

// 将所有元素转换为小写
$array = array_map('strtolower', $array);

// 去重
$array = array_unique($array);

print_r($array);

输出:

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

方法2:使用 array_change_key_casearray_flip

你可以通过将数组的键和值互换,利用 array_change_key_case 函数将键转换为统一的大小写,然后再将键和值互换回来。

$array = ["Apple", "apple", "Banana", "banana", "Orange"];

// 将数组的键和值互换
$array = array_flip($array);

// 将键转换为小写
$array = array_change_key_case($array, CASE_LOWER);

// 再次将键和值互换回来
$array = array_flip($array);

print_r($array);

输出:

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

方法3:使用 array_reduce

你可以使用 array_reduce 函数来手动构建一个去重后的数组。

$array = ["Apple", "apple", "Banana", "banana", "Orange"];

$array = array_reduce($array, function($carry, $item) {
    $lowercaseItem = strtolower($item);
    if (!in_array($lowercaseItem, $carry)) {
        $carry[] = $lowercaseItem;
    }
    return $carry;
}, []);

print_r($array);

输出:

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

方法4:使用 array_filterin_array

你可以使用 array_filter 函数结合 in_array 来手动过滤重复项。

$array = ["Apple", "apple", "Banana", "banana", "Orange"];

$result = [];
foreach ($array as $item) {
    $lowercaseItem = strtolower($item);
    if (!in_array($lowercaseItem, $result)) {
        $result[] = $lowercaseItem;
    }
}

print_r($result);

输出:

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

总结

以上几种方法都可以实现忽略大小写的数组去重。选择哪种方法取决于你的具体需求和代码风格偏好。通常情况下,array_maparray_unique 的组合是最简洁和高效的方式。