这对我来说很难说,但我更容易证明:
我有一个选择选项:
<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.谢谢,哈德森
这是因为PHP非常喜欢数字,如果比较的任何一方看起来像一个数字,它会尝试制作两个操作数.这意味着你的字符串被转换为浮点数,而且确实变成了1.1.
要比较字符串并确保它们被比较为字符串,要么使用===(假设您的其他操作数也是字符串),要么使用strcmp.
if ($frenquency[$key] === '1.10')
if (strcmp($frenquency[$key], '1.10') == 0)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅比较运算符的PHP手册,"与各种类型的比较"页面.