在PHP中,数组去重通常可以使用内置的 array_unique()
函数。但如果你需要自定义去重逻辑,可以通过编写自己的函数来实现。以下是一个自定义数组去重方法的示例:
<?php
function customArrayUnique($array, $callback) {
$uniqueArray = [];
$seen = [];
foreach ($array as $value) {
// 使用回调函数生成唯一标识
$key = $callback($value);
// 如果该标识尚未出现过,则将其添加到结果数组中
if (!isset($seen[$key])) {
$seen[$key] = true;
$uniqueArray[] = $value;
}
}
return $uniqueArray;
}
// 示例数组
$array = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 1, 'name' => 'Alice'],
['id' => 3, 'name' => 'Charlie'],
];
// 自定义去重逻辑:根据 'id' 字段去重
$uniqueArray = customArrayUnique($array, function($item) {
return $item['id'];
});
print_r($uniqueArray);
?>
Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
[1] => Array
(
[id] => 2
[name] => Bob
)
[2] => Array
(
[id] => 3
[name] => Charlie
)
)
customArrayUnique
函数:这个函数接受两个参数:
$array
:要去重的数组。$callback
:一个回调函数,用于生成数组元素的唯一标识。回调函数:在示例中,回调函数返回数组元素的 id
字段作为唯一标识。你可以根据需要自定义回调函数,返回任何你认为可以作为唯一标识的值。
去重逻辑:通过遍历数组,使用回调函数生成唯一标识,并检查该标识是否已经存在于 $seen
数组中。如果不存在,则将该元素添加到结果数组中。
id
)去重时。你可以根据需要扩展这个函数,例如支持多维数组的去重,或者根据多个字段的组合去重。只需在回调函数中返回一个复合键即可。
// 根据多个字段去重
$uniqueArray = customArrayUnique($array, function($item) {
return $item['id'] . '-' . $item['name'];
});
通过这种方式,你可以灵活地实现各种复杂的去重需求。