【问题标题】:comparing two variables returns false result比较两个变量返回错误结果
【发布时间】:2012-09-03 13:03:37
【问题描述】:

为什么总是返回true

$s = '334rr';
$i = (int)$s;

if ($i == $s) {
    echo true;
} else {
    echo false;
}

如果我回显$i,它会给出334 的值,这与$s 不同,后者是334rr

【问题讨论】:

    标签: php string


    【解决方案1】:

    来自the manual

    如果您将数字与字符串进行比较,或者比较涉及数字字符串,则每个字符串都将转换为数字并以数字方式进行比较。

    所以:($i == $s)($i == (int)$s) 的值相同。

    使用=== 避免类型杂乱。

    【讨论】:

      【解决方案2】:

      当使用==比较字符串和整数时,字符串会尝试大小写为整数。

      【讨论】:

        【解决方案3】:

        试试这个

        $s = '334rr';
        $i = intval($s);
        if ($i == $s) {
         echo true;
         } else {
          echo false;
        }
        

        【讨论】:

          【解决方案4】:

          不建议将字符串与 int 进行比较。您应该改用===,它将验证相同的数据类型以及相同的值。

          【讨论】:

            【解决方案5】:

            当与另一个整数 ($i) 比较时,PHP 将 $s 字符串转换为一个整数。 它基本上是这样做的(嗯,我不知道它在内部做了什么,但归结为这个):

            if($i == (int) $s)
            

            这使陈述成立

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-05-14
              • 1970-01-01
              • 1970-01-01
              • 2018-09-02
              • 2018-07-11
              • 1970-01-01
              • 2015-01-19
              相关资源
              最近更新 更多