PHP:代入文を使った配列末尾への追加について

最近、PHPでの代入を使った配列末尾への値追加で驚いたことがあるので、それを書きます。

 

通常、PHPで配列の末尾に値を追加する際に以下のようなコードで実現できます。

$array   = array();
$array[] = 値;

 

実は私、これがarray_push関数と同じ挙動をするものだと思っていました。

これが大間違いで、実はこれ代入なんですよ〜。

 

つまり

$array   = '';
$array[] = 値;

とするとstring型の$arrayは再定義されて、array型の$arrayとして生まれ変わるのです。

var_dumpで中身を見るとすると

string(0) ""
から
array(1) {
  [0] => 値
}

になっているということですね。

 

array型に対しては、

$array[] = 値;

とやっていくと配列の末尾に値が追加されていくことになります。

 

最初は、またPHPが意味不明なキャストしてると思いきや…

まあ代入なら仕方ない………んなわけあるか!