0

を使用した後、配列の順序が失われるのに少し問題がありunset()ます。これは私が使用しているコードです。

$id = $_GET['id'];
for ($i = 0; $i < count($my_array); $i++) {
  if ($my_array[$i] == $id) {
    unset($my_array[$i]);
  }
}

$my_array4つのアイテムがあり、$my_array[1]に等しいと仮定し$idます。それを設定解除した後、ループして$my_array未定義のオフセット:1エラーが発生します。で、、、、print_r($my_array)を取得します。$my_array[0]$my_array[2]$my_array[3]

私はそれが起こっている理由を完全に理解しています。アイテム2'がアイテム1にドロップし、残りのアイテムがそれぞれ配列の最後にドロップするように、配列のインデックスを再作成する方法はありますか?

のようなものreindex($my_array)は甘いでしょう。新しい配列を使用して別のforループを実行し、それらを手動で転送できることはわかっていますが、ワンステップソリューションは素晴らしいでしょう。どこにも何も見つかりませんでした。

4

2 に答える 2

3

を呼び出しarray_valuesて、配列のインデックスを再作成します。

于 2010-08-01T06:05:53.867 に答える
0

私はあなたもできることを発見しました

 array_splice($ar, 0, 0);

これにより、インプレースでインデックスの再作成が行われるため、元の配列のコピーが作成されることはありません。

于 2013-12-04T15:42:47.590 に答える