在PHP中,数组去重通常使用array_unique()
函数,但该函数会保留第一个出现的元素,而不是最后一个。如果你希望保留最后一个出现的元素,可以通过以下方法实现:
array_reverse()
和array_unique()
array_unique()
去重。$array = [1, 2, 3, 2, 4, 3, 5];
// 反转数组
$reversed = array_reverse($array);
// 去重
$unique = array_unique($reversed);
// 再次反转
$result = array_reverse($unique);
print_r($result);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 4
[3] => 3
[4] => 5
)
array_flip()
和array_keys()
array_flip()
将数组的键和值交换,这样重复的值会被覆盖,保留最后一个出现的值。array_keys()
获取去重后的键。$array = [1, 2, 3, 2, 4, 3, 5];
// 交换键值
$flipped = array_flip($array);
// 获取去重后的键
$result = array_keys($flipped);
print_r($result);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
你可以手动遍历数组,使用一个辅助数组来记录已经出现的值,并保留最后一个出现的元素。
$array = [1, 2, 3, 2, 4, 3, 5];
$result = [];
$seen = [];
foreach ($array as $value) {
if (isset($seen[$value])) {
unset($result[$seen[$value]]);
}
$seen[$value] = count($result);
$result[] = $value;
}
print_r(array_values($result));
输出:
Array
(
[0] => 1
[1] => 2
[2] => 4
[3] => 3
[4] => 5
)
array_flip()
的特性,代码简洁。根据你的需求选择合适的方法即可。