[PHP] 値の有り無しを判定するのは、enptyとnotとどっちがいいのか?

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

世間のエンジニア業界では嫌われ者のPHPですが、WEB表示をするシステムで使うには非常に便利に使える言語です。
 

これからWEBエンジニアを目指す人にとって、LAMPのPを一昔前はPHPやPerlとしていたけど、最近はPythonとする話もチラホラ聞きますが、PHPを避けて通ることは辞めたほうがいいと思います。
 

世の中のホームページの大半でWordpressが使われていることを考えると、PHPを知らないとWEBエンジニアとしては使えない場面が多くあるという事も安易に理解できます。
 

そんなPHPという言語は、関数が鬼たくさん存在します。
まるで「関数の玉手箱や〜〜」っていうぐらいの多さに、これから勉強する人は戸惑う人の気持ちも分からなくはないです。
 

長年PHP言語を使ってきた僕でも、初めて知る標準関数などもあり、実際に使わなくても支障はないのですが、知らないのも気持ち悪いので、リファレンスを見るようにはしています。

empty関数って必要?

if文で、変数が定義されているかどうかを調べるには、isset()関数を使っていましたが、PHP7からはこのお作法から開放されているようです。
 

でも、下位互換を考えてPHP7お作法に乗っからずにissetを書き続けているのですが、この間人の書いたソースをみていたら、empty()関数を見かけました。
 

あまり使わない関数だったのですが、!~と書くnot記述とどう違うのかを確認したくて、簡単な実験をしてみました。

emptyリファレンス抜粋

とりあえず、事前にリファレンスページを見て、empty関数の事を完結にまとめてみました。
 

比較実験

なんとなく、notと全く同じような気がするので、is_nullやissetなど、気になる関連関数と合わせて比較できるサンプルプログラムを作ってみました。
 

 

 

配列を受け渡した時に、文字列扱いしている箇所でwarningが出ていますが、あまり気にせずに進めます。
 

まず、emptyとnotは全てが同じ結果になっていることから、”empty() === not”と考えて良さそうです。
 

ちょっとした気付きなんですが、変数にnullを入れると、issetはfalseを返すと言うことが分かりました。
falseを入れているとtrueを返すのに、不思議ですね・・・
 

emptyとnotのどちらを使うべきなのか?

この結果から、僕はempty関数は、「不要」と判断しました。
 

PHPのみを今後ずっと使い続けていくのであれば、empty関数を使うのもいいかもしれませんが、他の言語では使わない関数は使わないほうが、記述ミスにつながるトラブルが減るのは言うまでもありません。
 

WEBエンジニアというかプログラマーとしての効率化は、こうした言語における便利関数を使うよりも、いくつもの言語で同じ結果が出せるという事も重要なポイントであると考えているので、プログラム標準化を自分の中で行っていくことが重要です。
 

そもそもPHPもC言語でできているんですからね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です