底辺SE奮闘記

年収300万SEブログ

【PHP】PHPの不思議な挙動について array_pushとnull

不思議な挙動を見たのでここに

環境

現象

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と同じように見えます。

phpソースコードを読めばわかりそうですが・・・面倒ですね。