配列の重複した値を削除する方法について多くの質問がありますが、配列の末尾から重複した値を削除するにはどうすればよいでしょうか? たとえば、次の値を持つ配列:
28, 56, 26, 369, 114, 26, 26, 26
戻るべき
28, 56, 26, 369, 114
前の 26 を保持することに注意してください。最後の重複のみを削除する必要があります。
PHPでこれを行う方法はありますか?
ケース 1 - アレイ内の重複を削除する場合。使用機能array_unique()
$array = array(28, 56, 26, 369, 114, 26, 26, 26);
$unique_values = array_unique($array);
var_dump($unique_values);
ケース 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);
$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);