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";
}
[funaki@localhost]~/work% php test.php
hello!
hello!
hello!

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

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

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

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

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

This entry was posted in いじる. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Page optimized by WP Minify WordPress Plugin