不思議な挙動を見たのでここに
環境
- PHP 7.1.17
現象
case 1
まずは普通に
<?php $a = []; array_push($a, "x"); var_dump($a);
この出力は下記のようになります。
array(1) { [0]=> string(1) "a" }
問題ないと思います。
case 2
続いて、
<?php $a = null; array_push($a, "a"); var_dump($a);
この出力は下記のようになります。
PHP Warning: array_push() expects parameter 1 to be array, null given in XXXXXX on line XX
これも問題ないと思います。
case 3
では、
<?php $a = null; $a[] = "a"; var_dump($a);
これはどうでしょう。これは下記のようになります。
array(1) { [0]=> string(1) "a" }
???なぜエラーではないのでしょう。
ぱっと見、case2と同じように見えます。