[PHP] 配列から要素を削除し、抜けたキーを詰める

公開

スポンサーリンク

PHPで配列から特定の要素を削除した後に、抜け番となったキーを詰める方法のまとめです。

配列から特定の要素を削除

配列から特定の要素を削除するにはunset()を使います。

$arr = array("一","二","三");
var_dump( $arr );
//array(5) { [0]=> string(3) "一" [1]=> string(3) "二" [2]=> string(3) "三" } 

unset($arr[1]);
var_dump( $arr );
//array(5) { [0]=> string(3) "一" [2]=> string(3) "三" } 
unset($arr[1])で、$arrのキー1と、それに紐付けられた要素が削除されました。

抜け番を詰める

この状態ではキーが0, 2と、間が抜けた状態となっています。これを詰めるには配列の結合を行うarray_merge()か、配列の全ての値を返すarray_values()を使います。

var_dump( $arr );
//array(5) { [0]=> string(3) "一" [2]=> string(3) "三" } 

$new_hash = array_merge( $arr );
var_dump( $arr );
//array(5) { [0]=> string(3) "一" [1]=> string(3) "三" } 

$new_hash = array_values( $arr );
var_dump( $arr );
//array(5) { [0]=> string(3) "一" [1]=> string(3) "三" } 

これでキーが新たに0から割り振られ、抜けがなくなった配列が得られました。

スポンサーリンク


Comment


  1. ななし : 投稿日:2015年8月25日 10:11 AM

    $new_hash = array_merge( $arr );
    //var_dump( $arr );
    var_dump( $new_hash );
    //array(5) { [0]=> string(3) “一” [1]=> string(3) “三” }

    $new_hash = array_values( $arr );
    //var_dump( $arr );
    var_dump( $new_hash );
    //array(5) { [0]=> string(3) “一” [1]=> string(3) “三” }

    …じゃないでしょうか?