目次
ひとつだけ削除
PHP の配列の要素をひとつだけ削除したいことがありました。 PHP で配列、連想配列から要素を削除する方法を調べてみました。
数字添字配列
まずは、要素のキー名が数字になっている、添字配列から要素を削除してみたいと思います。
PHP のコード :
<?php
$a = array( "A" , "B" , "C" ); //元の配列です。
var_dump( $a ); // var_dump 関数は、元の変数(今回は配列)を見やすく分かりやすく表示する関数です。下のようにブラウザに表示されます。
/*
array(3) {
[0]=> string(1) "A"
[1]=> string(1) "B"
[2]=> string(1) "C"
}
*/
unset( $a[1] ); // 2 番目の要素を削除します。
var_dump( $a ); //要素削除後の配列を出力します。
/*
array(2) {
[0]=> string(1) "A"
[2]=> string(1) "C"
}
*/
?>
元の配列の、 2 番目の要素が削除されました。 [1]=> string(1) "B" の部分です。
元の配列のキー名は、 [0][1][2] と連番になっていましたが、 2 番目の要素を削除した後は、 [0][2] と [1] が、ひとつ飛んでいます。
現時点で $a の配列のキー名は、 [0][2] となっています。
配列のキー名を連番で振り直したい場合は、 array_values 関数を使用することで可能なようです。
上の PHP のコードにつなげて、以下の PHP のコードを追加してみます。
追加の PHP のコード :
<?php
$a = array_values( $a ); //数字添字を付けた配列を返す関数。 0 から連番のキー名が付いた配列を返すようです。
var_dump( $a ); //結果を出力。
/*
array(2) {
[0]=> string(1) "A"
[1]=> string(1) "C"
}
*/
?>
そうすると、 $a 配列のキー名が、 [0][1] に振り直されています。
連想配列
次は、要素のキー名が文字になっている、連想配列から要素を削除することを試してみたいと思います。連想配列ということで、キー名の "a" から、その値である "A" が思い浮かびます。
PHP のコード :
<?php
//元の連想配列。
$a = array(
"a" => "A" ,
"b" => "B" ,
"c" => "C" , //最後のカンマ( , )は、続く要素がないので、エラーになるように思いますが、 PHP では、これで良いみたいです。
);
var_dump( $a ); //元の連想配列を出力。
/*
array(3) {
["a"]=> string(1) "A"
["b"]=> string(1) "B"
["c"]=> string(1) "C"
}
*/
unset( $a["b"] ); // 2 番目の要素を削除。
var_dump( $a ); //要素削除後の配列を出力。
/*
array(2) {
["a"]=> string(1) "A"
["c"]=> string(1) "C"
}
*/
?>
元の配列から、 2 番目の要素が削除されました。 ["b"]=> string(1) "B" の部分です。
連想配列は順次を気にしないで良い配列という印象です。
関数 ?
どの部分で削除をしているのかという重要なことを書いてなかったです。
配列のひとつの要素だけを削除しているのは、 PHP マニュアルの 変数操作 関数 にある、 unset() 関数でした。配列 関数 の中には、入っていませんでした。
- PHP: unset - Manual
- http://php.net/manual/ja/function.unset.php
この、 unset() 関数と、配列の数値添字を振り直した関数 array_values() のことは、 PHP マニュアルの型の説明の配列のページにも書いてありました。少し下の方に書いてあったので、ブラウザのページ内検索機能で unset と array_values を検索してみると見つけやすいかもしれません。
- PHP: 配列 - Manual
- http://php.net/manual/ja/language.types.array.php
参考情報
あとがき
配列から要素をひとつだけ削除するという試みでした。
以上、閲覧ありがとうございました。
- [ Amazon.co.jp アソシエイト ] PHP 関係の本
- https://amzn.to/41Kpx4Q