【PHP】空配列を`=== []`で判定する

TwitterでPHPのempty関数を安易に使うのは良くない趣旨のツイートを見ました。普段からemptyを使っていて何の疑問も持たなかったので、へーって思ってツイートを眺めてました。

こんなチェックをするそうです。

if ($a === [])

チェック内容が明確なので可読性がよいです。

if (empty($a))

この場合、$aがarrayの空配列チェックなのか、stringの空文字チェックなのか1文だけでは分かりません。あと、NULLの場合の挙動が先述のコードとは異なるので、なんとなく危ないですね。

今度からもう少しこういうところに気をつかって書いていく良いきっかけとなりました。

※PHPマニュアルのPHP 型の比較表から確認できるように、emptyの挙動はけっこうトリッキー。気をつけましょう!