比较时奇怪的行为

时间:2014-01-29 04:49:00

标签: php

任何人都可以解释为什么会这样,

<?php
if (0 == 'fasas')// or if ('fasas' == 0)
{
  exit('if condition success');
}
exit;

输出 if condition success

这里我正在检查一个等于零的字符串,它总是成功我无法理解这种行为

2 个答案:

答案 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

希望这有帮助!