unset()
で要素を削除した後、必要があれば array_values()
で歯抜けになったのを詰めます。
$arr = array(0, 1, 2, 3);
unset($arr[1]);
foreach ($arr as $key => $value) {
echo $key . ' => ' . $value . "\n";
}
// 0 => 0
// 2 => 2
// 3 => 3
$arr = array_values($arr);
foreach ($arr as $key => $value) {
echo $key . ' => ' . $value . "\n";
}
// 0 => 0
// 1 => 2
// 2 => 3
array_splice()
でもできますが、毎回インデックスを詰め直すため、複数のバラバラな要素を削除する場合はパフォーマンスが落ちるかもしれません。
しかし unset()
って演算子なのか関数なのかよくわからなくて気持ち悪いですね。
参考
How to delete an element from an array in php? - Stack Overflow