[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 メーリングリストの案内