ホームページ制作 オフィスオバタ

PHP配列の1要素だけを削除する方法を調べた

PHPで配列を作成することは多々あります。
ただ、配列の一部を削除することはあまりありません。

なぜなら、削除するなら初めから配列を作らなければよいからです。
なので、配列の一部を削除する方法について知りませんでした。

ところが、今回配列の一部を削除しなければいけない事象がありました。
そもそも可能なのか?
という疑問も含め、調べてみました。

配列の一部を削除する必要が発生した経緯

そもそもなぜ配列の一部を削除しなければいけなかったのか?
について説明いたします。

ズバリセッション情報の削除です。

具体的には、管理画面制作時に必要な情報をセッションに保存しています。
ログアウト時に、セッションに保存した任意の情報を削除する必要がありました。

次回ログイン時に誤動作させないためです。

ただ、セッション情報すべてを消すわけにはいかず、一部の情報だけを削除する必要がありました。
それで、配列の一部を削除する必要が発生したのです。

というわけで、いつものごとくググって調べました。

unset()関数だけで実現できました

例えば次のような配列があるとします。

$table = array("test01", "test02", "test03");

この中で「test02」だけを削除するとします。

次のような記述で「test02」だけを削除できます。

unset($table[1]);

たったこれだけで、配列の特定メンバだけを削除できました。

unset()ってなんとなくunset($table); というように、配列全部を削除するイメージでしたが、メンバ名を指定することもできることを今回学びました。

ちなみに任意のメンバ名を付けた場合も削除できます。

サンプルは、メンバ名を省略したパターンでしたが、次のような配列でも特定メンバを削除できます。

$table = array("nokosu01"=>"test01", "sakujyo"=>"test02", "nokosu02"=>"test03");

任意のメンバ名を付けた場合は次のように指定します。
“test02″を削除する例

unset($table["sakujyo"]);

メンバ名省略時は、数字を指定しますが、任意名称がある場合はその名称で指定します。
配列参照と同じです。

予想外のことはありうるものです

配列の一部を削除するなんて、そもそも意味がないと思っていましたが、今回セッションという全部消してはいけない配列の場合、一部削除が必要という体験をしました。

考えが偏っていると、思いがけない事象で頭を抱えることになります。
発想を柔らかくしておくことが大事だとつくづく思いました。

モバイルバージョンを終了