是的,PHP 数组去重可以使用匿名函数(也称为闭包)来实现。PHP 提供了多种数组去重的方法,其中一种方式是使用 array_filter
函数结合匿名函数来实现自定义的去重逻辑。
array_filter
和匿名函数去重<?php
$array = [1, 2, 2, 3, 4, 4, 5];
// 使用 array_filter 和匿名函数去重
$uniqueArray = array_filter($array, function($value, $key) use (&$seen) {
if (!isset($seen[$value])) {
$seen[$value] = true;
return true;
}
return false;
}, ARRAY_FILTER_USE_BOTH);
print_r($uniqueArray);
?>
array_filter
: 该函数用于过滤数组中的元素。它接受一个数组和一个回调函数(匿名函数),并返回一个新的数组,其中只包含回调函数返回 true
的元素。$seen
数组中。如果不存在,则将其添加到 $seen
数组中并返回 true
,否则返回 false
。ARRAY_FILTER_USE_BOTH
: 这个标志告诉 array_filter
将数组的键和值都传递给回调函数。Array
(
[0] => 1
[1] => 2
[3] => 3
[4] => 4
[6] => 5
)
虽然使用匿名函数可以实现数组去重,但 PHP 也提供了更简单的方法来去重,例如使用 array_unique
函数:
<?php
$array = [1, 2, 2, 3, 4, 4, 5];
$uniqueArray = array_unique($array);
print_r($uniqueArray);
?>
Array
(
[0] => 1
[1] => 2
[3] => 3
[4] => 4
[6] => 5
)
array_unique
是更简洁和高效的选择。根据你的具体需求选择合适的方法。