PHPの配列から要素を削除(飛び飛びのキーを連番にする方法も)

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPの配列から特定の要素を削除する方法です。

unset()を使った場合、一緒にキーも削除されるため、飛び飛びの歯抜けになり、弊害も生まれます。

今回は削除で飛び飛びになってしまったキーを再連番する方法までご紹介します。

 

配列から要素を削除

unsetで要素を1つだけ削除

[0]=>”神奈川”,[2]=>”福岡”

unset()で2番目の大阪を削除しました。

キーは0から振られるので、$citys[1]は2番目の要素ですね。

array_spliceで要素を複数削除

[0]=>”神奈川”

上記の例では、array_splice()の第二引数で指定した数字以降が削除されました。

キーは0から振られるので、1は2番目の要素ですね。

array_splice(配列, 開始位置);

以下では削除する個数も指定しています。

[0]=>”福岡”

第二引数で開始位置を、第三引数で削除する要素数を指定できます。

array_splice(配列, 開始位置, 要素数);

上記の例では、0から2個の要素数を削除するコードなので、[0]神奈川[1]大阪が削除されました。

そして福岡には空き番となったキー[0]が振られました。

キーを連番にする必要もないですね。

飛び飛びのキーを連番にする

array_valuesで配列を連番にする

array_values()で飛び飛びになってしまったキーを連番に振り直します。

[0]=>”神奈川”,[1]=>”福岡”

キー[1]が空き番だったため、キーが[2]だった福岡[1]となり、連番になりました。

array_values()は以下のように動作します。

  1. 指定の配列から全ての値を取り出す
  2. 取り出した値に「0」から始まる連番(キー)を振る
  3. それを配列で返す

以上のことから、連想配列では以下のようにキーが連番になってしまうので注意しましょう。

[0]=>”神奈川”,[1]=>”大阪”, [2]=>”福岡”

キーが[kanagawa][0]に変わってしまいました。

ちなみにarray_merge()でも同様に連番にできます。

配列自体を削除する

unset()でキーを指定せずに配列を指定すると、全部削除されます。

NULL

上記のように配列自体がなくなりました。

下記のようにnullを格納した場合と同じ動作になります。

NULL

ただ、下記のように配列を初期化した場合は、配列自体は残ります。

array(0) {}

nullは配列自体が存在しませんが、array(0)は配列自体は存在していますが値が空の状態なので、厳密には別物です。

nullと空文字についてはこちらを参考にしてみてください。

参考:PHPでNULL判定する3パターンとNULLと空文字の違い

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*