从数组末尾删除重复值

时间:2013-04-04 09:48:24

标签: php arrays

许多问题都回答了如何删除数组的dublicate值,但是如何从数组的 end 中删除重复值?例如,具有以下值的数组:

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

应该返回

28, 56, 26, 369, 114

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

有没有办法在PHP中执行此操作?

2 个答案:

答案 0 :(得分:2)

CASE 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);

答案 1 :(得分: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);