Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么字符串大于或小于整数?_Php - Fatal编程技术网

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

Php 为什么字符串大于或小于整数?,php,Php,我不明白为什么这句话两次都是真的 $hello="foo"; if($hello<=6){ echo "yes\n"; } if ($hello>=0) { echo "ohh yess!"; } 我知道整数和字符串之间的比较是非法的,但为什么它最终会变成真的呢 目前正在检查是否存在$hello,在这两种情况下都是真的。可能是您想要这个 $hello="foo"; if(strlen($hello)&

我不明白为什么这句话两次都是真的

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

我知道整数和字符串之间的比较是非法的,但为什么它最终会变成真的呢

目前正在检查
是否存在$hello
,在这两种情况下都是真的。可能是您想要这个

$hello="foo";
     if(strlen($hello)<=6){
        echo "yes\n";
     }
     if (strlen($hello)>=0) {
        echo "ohh yess!";
     }
$hello=“foo”;
if(strlen($hello)=0){
回音“哦,是的!”;
}
这是因为。所以
“foo”
的计算结果为零,因为它被转换为整数。如果使用相同运算符(
==
),则不会进行类型转换,因此
“foo”
将被视为文本字符串,然后您的语句将计算为false。

如所述:

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

在这种情况下,当比较完成时,字符串
foo
的计算结果为零,因此
if
条件的计算结果均为
TRUE

实际上,您将执行以下操作:

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

if (0 >= 0) {
    echo "ohh yess!";
}
if(0=0){
回音“哦,是的!”;
}

如果要确保变量类型也被考虑在内,请使用
==
运算符。

它将$hello作为零,这不是非法的;PHP为这种比较提供了定义良好的规则。毕竟,你会期望
“5”<6
是真的。如果它是非法的,你会得到一条错误消息。实际上,PHP正试图将
foo
转换为一个数字,由于开头没有数字,所以将其转换为0。请参阅有关类型转换的手册页:因此仅在比较时$hello为零?使用===或>==获得实际结果。因为week变量类型和casting PHP的行为是这样的。我要说的是$hello在进行比较之前被转换为0。这就是他们看到这些结果的原因。好的。意思是说如果$hello=“4s”在比较时它将取为4?
if(0 <= 6) {
    echo "yes\n";
}

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