任何人都可以解释为什么会这样,
<?php
if (0 == 'fasas')// or if ('fasas' == 0)
{
exit('if condition success');
}
exit;
输出: if condition success
这里我正在检查一个等于零的字符串,它总是成功我无法理解这种行为
答案 0 :(得分:1)
请参阅string conversion to numbers in PHP。
该值由字符串的初始部分给出。如果是字符串 从有效的数字数据开始,这将是使用的值。 否则,该值将为0(零)。
所以:
if ('fasas' == 0) {
echo 'This is true, fasas has no numbers so it is converted to 0';
}
if ('0fasas' == 0) {
echo 'This is true also, 0fasas is converted to 0';
}
if ('1fasas' == 0) {
echo 'This is false, 1fasas is converted to 1';
}
答案 1 :(得分:0)
您必须使用===
这是一个严格的比较,这意味着正在比较价值和类型。
简单地使用==
并不严格,这意味着将字符串比较为0也是正确的。
if ('fasas' === 0)
{
exit('if condition success');
}
exit;
您还可以使用strcmp(),这是一种安全的二进制比较。
This is an interesting blog about it
希望这有帮助!