php unsetでインデックス番号を指定して配列を削除する

phpで、unsetを使用して、インデックス番号を指定して配列を削除するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- php 8.0.0
- nginx 1.14.1
unset使い方
unsetを使用すれば、インデックス番号を指定して配列を削除することが可能です。
unset(配列[インデックス番号])
以下は、配列のインデックス番号を指定して配列を削除するサンプルコードとなります。
<?php
$arr = ['a', 'b', 'c', 'd'];
unset($arr[1]); // 'b'を削除
print_r($arr);
実行結果
Array
(
[0] => a
[2] => c
[3] => d
)
ただし、unsetを使用するとインデックス番号の並びもおかしくなるので、for文を使用した場合は、全て取得できずwarningとなります。
<?php
$arr = ['a', 'b', 'c', 'd'];
unset($arr[1]); // 'b'を削除
for( $i = 0; $i < count($arr); $i++ ){
echo $arr[$i];
}
実行結果
a
PHP Warning: Undefined array key 1 in /usr/share/nginx/html/sample.php on line 8
PHP Stack trace:
PHP 1. {main}() /usr/share/nginx/html/sample.php:0
c
foreachを使用すれば、全て取得することができます。
<?php
$arr = ['a', 'b', 'c', 'd'];
unset($arr[1]); // 'b'を削除
foreach ($arr as $result) {
echo $result. PHP_EOL;
}
実行結果
a
c
d
array_mergeを使用すれば、インデックス番号を振りなおすことも可能です。
<?php
$arr = ['a', 'b', 'c', 'd'];
unset($arr[1]); // 'b'を削除
$result = array_merge($arr);
print_r($result);
実行結果
Array
(
[0] => a
[1] => c
[2] => d
)
また、配列を全て削除することも可能です。
<?php
$arr = ['a', 'b', 'c', 'd'];
unset($arr); // 配列を削除
var_dump($arr);
実行結果
PHP Warning: Undefined variable $arr in /usr/share/nginx/html/sample.php on line 7
PHP Stack trace:
PHP 1. {main}() /usr/share/nginx/html/sample.php:0
/usr/share/nginx/html/sample.php:7:
NULL
-
前の記事
Alpine.jsでAccordionを実装 2020.12.14
-
次の記事
docker composeを使ってMongoDBを構築する 2020.12.15
コメントを書く