長い数値文字列による比較の問題
この投稿は、anyilaoliu によって最終編集されました: 2013-12-13 15:04:43
タイトルのように
このような問題が発生しました
<br />
$a = "222111565652521142";<br />
$b = "222111565652521139";<br />
$c = 222111565652521142;<br />
$d = 222111565652521139;<br />
<br />
var_dump($a);<br />
echo "<br/>";<br />
var_dump($b);<br />
echo "<br/>";<br />
var_dump($c);<br />
echo "<br/>";<br />
var_dump($d);<br />
echo "<br/>";<br />
<br />
if ($a == $b) {<br />
echo 3;<br />
}else{<br />
echo 31;<br />
}<br />
echo "<br/>";<br />
<br />
if ($c == $d) {<br />
echo 4;<br />
}else{<br />
echo 41;<br />
}<br />
echo "<br/>";<br />
ログイン後にコピー
結果は
です
<br />
<br />
<br />
string '222111565652521142' (length=18)<br />
<br />
<br />
string '222111565652521139' (length=18)<br />
<br />
<br />
float 2.2211156565252E+17<br />
<br />
<br />
float 2.2211156565252E+17<br />
<br />
<br />
<br />
31<br />
4<br />
ログイン後にコピー
ここで、2 番目のケースで 2 つをどのように比較するかという問題が生じます
質問 2: データベースから読み取られた 2 つの数値セットは、var_dump の後に string(18) として表示されます。ただし、比較結果は上記の例とはまったく逆になり、2 つの文字列が等しいかどうかの比較も成功します。
解決する