0

许多问题回答了如何删除数组的重复值,但是如何从数组末尾删除重复值?例如具有这些值的数组:

28, 56, 26, 369, 114, 26, 26, 26

应该返回

28, 56, 26, 369, 114

请注意,它保留前 26 个,只应删除最后的重复项

有没有办法在 PHP 中做到这一点?

4

2 回答 2

2

案例 1 - 如果要删除数组中的任何重复项。使用功能array_unique()

$array = array(28, 56, 26, 369, 114, 26, 26, 26);
$unique_values = array_unique($array);
var_dump($unique_values);

PHP array_unique

案例 2 - 如果您只想在数组末尾删除重复项,那么如果在开始时有重复项,它们将被保留 - 它不是很漂亮的代码..

$arr = array(28, 56, 26, 26, 369, 369,  114, 26, 26, 26, 114);
$arr = array_reverse($arr);
$counts = array_count_values($arr);
foreach ($arr as $key => $value) {
    if(!isset($first_element))
        $first_element = $value;
    if($first_element != $value)
        break;
    if($counts[$value] > 1){
        unset($arr[$key]);
        $counts[$value] = $counts[$value] - 1;
    }
}
$arr = array_reverse($arr);
var_dump($arr);
于 2013-04-04T09:50:17.890 回答
1
$array = array(28, 56, 26, 369, 114, 26, 26, 26);

end($array);
$last = FALSE;
while (current($array) == prev($array)) {
    unset($array[key($array)]);
    $last = TRUE;
}
if ($last) {
    end($array);
    unset($array[key($array)]);
}
var_dump($array);
于 2013-04-04T09:58:31.113 回答