为什么字符串大于或小于整数?

时间:2013-12-24 13:33:48

标签: php

我无法理解为什么声明在两次都成真。?

$hello="foo";
     if($hello<=6){
        echo "yes\n";
     }
     if ($hello>=0) {
        echo "ohh yess!";
     }

输出

yes
ohh yess!

我知道这是整数和字符串之间的非法比较,但为什么它毕竟是真的。

3 个答案:

答案 0 :(得分:8)

这是因为type juggling in PHP。所以"foo"的计算结果为零,因为它被转换为整数。如果您使用相同的运算符(===)类型转换未执行,那么"foo"将被视为文字字符串,然后您的语句将评估为false。

答案 1 :(得分:7)

正如PHP manual所说:

  

该值由字符串的初始部分给出。如果字符串以有效数字数据开头,则这将是使用的值。 否则,该值将为0(零)。

在这种情况下,字符串foo在比较完成时评估为零,因此if条件将评估为TRUE

实际上,你将会这样做:

if(0 <= 6) {
    echo "yes\n";
}

if (0 >= 0) {
    echo "ohh yess!";
}

如果您想确保也考虑变量类型,请使用===运算符。

答案 2 :(得分:-1)

目前它正在检查if $hello exist,在这两种情况下都是如此。可能你想要这个

$hello="foo";
     if(strlen($hello)<=6){
        echo "yes\n";
     }
     if (strlen($hello)>=0) {
        echo "ohh yess!";
     }