PHPの比較演算子($a == $b)で注意が必要なとき

どこかで既出だとは思いますが。というより以前同じようにハマった記憶があるようなないような。

PHP: PHP 型の比較表 – Manual
マニュアルだとこのページ、以下のBlueShoesの方が見やすい、
BlueShoes: PHP Cheat Sheet
「comparison with ==」の表で”foo”との比較でtrueになる値が3つある。3つもある。

<?php
if (0 == 'foo') {
  echo "hello!\\n";
}
if (true == 'foo') {
  echo "hello!\\n";
}
if ('foo' == 'foo') {
  echo "hello!\\n";
}
[[email protected]]~/work% php test.php
hello!
hello!
hello!

えーーーー。って感じがします。

解説はマニュアルにもちゃんとあった。仕様です。
PHP: 文字列 – Manual

整数値を文字列と比較する際、文字列が 数値に変換されます。

true/falseのときは===,!==を使うようにしていましたが文字列を比較するときも、strcmpか型比較付===を使うべきなのですね。。

Rubyに浮気宣言してから早2ヶ月。進展なし。
今週、Rubyに浮気します

This entry was posted in いじる. Bookmark the permalink. Both comments and trackbacks are currently closed.

Page optimized by WP Minify WordPress Plugin