[PHP-users 32705] 文字列と文字列の比較であっても「==」を使ってはならない

goungoun gounx2 @ gmail.com
2007年 10月 6日 (土) 13:26:18 JST


こんにちは。

# 質問というわけではないのですが、ショッキングだったので。

私、PHP始めて2年程になるのですが。

・phpには比較演算子に「==」と「===」があって、
  使い分けが必要と理解してたつもりでした。

その上で、

・文字列対文字列の比較なら「==」で
  比較しても*何ら問題ない*

と思っていました。

ところが、

PHP: 比較演算子 - Manual:
http://www.php.net/manual/ja/language.operators.comparison.php
> 数値形式の文字列を比較する場合、それは整数として比較されます。

との記述があります。
実際に

---
$ echo "<?php var_dump('100' == '100.0'); ?>" | php
bool(true)
---

となり、まさかこんな基本的なところで
PHPを理解していなかったのかと結構ショックです。


ps.
以下全てtrueになるんですね。
 ('100' == '100.0')
 ('100' == '10e1')
 ('100' == '0100')
ちなみに
 (100 == '0100')
もtrueになりますが、数値対文字列の比較であり
個人的には、言語仕様に左右されるであろうと
予測できる範囲だったので
とくに驚きはありませんでした。

-- 
goungoun <gounx2 @ gmail.com>
http://goungoun.dip.jp/app/



PHP-users メーリングリストの案内