PHP:代入文を使った配列末尾への追加について
最近、PHPでの代入を使った配列末尾への値追加で驚いたことがあるので、それを書きます。
通常、PHPで配列の末尾に値を追加する際に以下のようなコードで実現できます。
$array = array(); $array[] = 値;
実は私、これがarray_push関数と同じ挙動をするものだと思っていました。
これが大間違いで、実はこれ代入なんですよ〜。
つまり
$array = ''; $array[] = 値;
とするとstring型の$arrayは再定義されて、array型の$arrayとして生まれ変わるのです。
var_dumpで中身を見るとすると
string(0) "" から array(1) { [0] => 値 }
になっているということですね。
array型に対しては、
$array[] = 値;
とやっていくと配列の末尾に値が追加されていくことになります。
最初は、またPHPが意味不明なキャストしてると思いきや…
まあ代入なら仕方ない………んなわけあるか!