PHPの比較演算子についての覚書

PHPの比較演算子には、気をつけるべき点が多くあります。

今回、少しはまったので覚書しておきます。

基本的に、一致を確認する場合には、型まで比較する
===
演算子を使うことが推奨されています。

=== 演算子は、2つの要件を必要とします。

1.型が同一であること。かつ、2.値が同一であること。

この2つの要件を両方満たして、真となります。

逆に、不一致を確認する場合には、
!==
演算子を使います。

!== 演算子は、2つの要件のうち、1つを必要とします。

1.型が同一でないこと。または、2.値が同一でないこと。

このどちらか1つの要件を満たせば、真となります。

つまり、=== は、かつ、という要件が必要ですが、!== は、または、で良いわけです。

基本中の基本ですが、混乱しやすいので覚書しておきます。

なお、型については、PHPマニュアルにかなり詳しく記述されています。

比較演算子
http://www.php.net/manual/ja/language.operators.comparison.php

型の相互変換
http://www.php.net/manual/ja/language.types.type-juggling.php

型の比較表
http://www.php.net/manual/ja/types.comparisons.php

上記ページは、必読です。

ところで、これらとは別に、型について緩く比較する演算子もあります。

== 演算子ですが、これは使わない方が良いということです。

理由は、気づかないうちに、型が自動変換されて、値も変換されてしまうからです。

マニュアルにも以下の記述があります。

整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が    数値に変換され、数値としての比較を行います。

型の自動変換は、便利なようで、思わぬバグの温床となるようです。

もう一つの、

!= 演算子も、== 演算子ほどではないにしても、バグを生む可能性があります。理由は、やはり、型の自動変換をしているからです。

以上、覚書でした。

カテゴリー: PHP パーマリンク

コメントを残す

メールアドレスが公開されることはありません。