回答:
unset($foo[0]); // remove item at index 0
$foo2 = array_values($foo); // 'reindex' array
unset($foo[0], $foo[3], $bar[1]);
array_splice
していて、0番目と1番目のインデックスでは機能しませんでした。
あなたはよりよく使うarray_shift()
。これは、配列の最初の要素を返し、それを配列から削除し、配列のインデックスを再作成します。オールインワンの効率的な方法。
array_pop()
は、必要に応じて最後の配列要素を取得して削除します。ただし、どちらの関数も、配列の中央にある要素に作用させることはできません。
array_splice($array, array_search(array_value, $array), 1);
Unset($array[0]);
Sort($array);
なぜこれが反対票を投じられているのかはわかりませんが、誰かがそれを試してみたくなったら、それが機能することに気付くでしょう。配列でソートを使用すると、配列のキーが再割り当てされます。唯一の欠点は、値を並べ替えることです。キーが明らかに再割り当てされるため、を使用してもarray_values
、値がソートされているかどうかは問題ではありません。
xzyferの答えに加えて
関数
function custom_unset(&$array=array(), $key=0) {
if(isset($array[$key])){
// remove item at index
unset($array[$key]);
// 'reindex' array
$array = array_values($array);
//alternatively
//$array = array_merge($array);
}
return $array;
}
使用する
$my_array=array(
0=>'test0',
1=>'test1',
2=>'test2'
);
custom_unset($my_array, 1);
結果
array(2) {
[0]=>
string(5) "test0"
[1]=>
string(5) "test2"
}
を使用するarray_merge
と、キーのインデックスが再作成されます。マニュアルはこう述べています:
数値キーのある入力配列の値は、結果配列のゼロから始まる増分キーで番号が付け直されます。
http://php.net/manual/en/function.array-merge.php
これは私が元の答えを見つけた場所です。
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset()