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

  • 作成日 2020.12.15
  • 更新日 2022.04.06
  • php
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