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!";
}