PHP读取1.10值为1.1(变量末尾为0)

Hud*_*ell 1 php numbers

这对我来说很难说,但我更容易证明:

我有一个选择选项:

<option <?php if($frequency[$key]=='1.10'){echo "selected";}?> value='1.10'>1 every 10 days</option>
Run Code Online (Sandbox Code Playgroud)

真的,$ frequency [$ key] = 1.1; ,但上面仍然显示选定.我以前从未见过这个,也不知道它可能会发生.有关如何防止这种情况的任何想法?

使用php5.谢谢,哈德森

zne*_*eak 6

这是因为PHP非常喜欢数字,如果比较的任何一方看起来像一个数字,它会尝试制作两个操作数.这意味着你的字符串被转换为浮点数,而且确实变成了1.1.

要比较字符串并确保它们被比较为字符串,要么使用===(假设您的其他操作数也是字符串),要么使用strcmp.

if ($frenquency[$key] === '1.10')
if (strcmp($frenquency[$key], '1.10') == 0)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅比较运算符的PHP手册,"与各种类型的比较"页面.