我有这段代码:
$string = "my;string";
$chars = array_merge(range('a','z'), range('A','Z'), range(0,9));
现在,如果我使用in_array()函数运行for循环验证$ string中$ string的每个字符,当它到达$ string的第三个字符时,它返回键值52,即值整数0;为什么in_array()将半圆视为整数零?
答案 0 :(得分:0)
尝试运行此代码段:
var_dump(';' == 0);
您可能会非常惊讶地发现PHP会吐出 true !当您不检查类型时,PHP的行为通常非常违反直觉。你恐怕不能单靠松散的比较。
现在尝试运行此snippit:
var_dump(';' === 0);
PHP将返回 false - 完美!
幸运的是in_array
函数有第三个参数,当设置为true
时,确保使用严格的比较来确保类型相同。这里的简单解决方案是用in_array($char, $chars)
替换in_array($char, $chars, true)
的每个实例,问题就会消失。