今回は検証もしていないただのメモです。
- PHP の文字列比較は「===」を使う。「==」ではない。
いえ、やっぱりちょっと試します。
試してみた
Windows の XAMPP 環境の PHP 5.3.8 で試しました。コマンドプロンプトでの PHP の実行方法は、以前の投稿の CakePHP2 認証、Auth コンポーネントのサンプルを世界一シンプルを目指して作ります。 | oki2a24 を参考にしました。
> set path=%path%;C:\pleiades\xampp\php > php -v PHP 5.3.8 (cli) (built: Aug 23 2011 11:50:20) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Xdebug v2.1.1, Copyright (c) 2002-2011, by Derick Rethans > php -r "echo ('3abc' == 3);" 1 > php -r "echo ('3abc' === 3);"
true の場合、echo での結果として「1」が出力されています。
- ‘3abc’ == 3 → true、つまり等しい!?
- ‘3abc’ === 3 → false、つまり等しくない。
それから、CakePHP2 のコアを検索してみた
文字列比較には、「===」のほかに strcmp 関数があります。
けれども、CakePHP2 のコアではどうなのか調べましたら、「===」を使用していました。なんとなく安心してこの比較方法が使えそうな気持ちになってきます♪
おわりに
文字列を比較するのは、PHP のみならず、さまざまなプログラム言語で気を使うところですけれども、こちらの投稿が参考になりました。ありがとうございます。
ちなみに、この投稿は2007年時点です。本投稿が2012年で PHP 5.3.8 ですけれどもちょっと試した感じ、仕様は変わっていないようです。