PHP比较'=='问题

时间:2010-12-16 17:15:42

标签: php conditional-operator

为什么输出'在'?

<?php
    if (1=='1, 3')
    {
        echo "in";
    }
?>

8 个答案:

答案 0 :(得分:5)

==运算符会对这两个值进行类型转换,以尝试将它们设置为相同的类型。在您的示例中,它会将字符串中的第二个值转换为整数,该整数将等于1。这显然等于你匹配的值。

如果你的第一个值是一个字符串 - 即引号中的'1'而不是一个整数,那么匹配就会失败,因为双方都是字符串,所以它会做一个字符串比较,然后它们'不同的字符串。

如果您需要一个不进行类型转换的完全匹配运算符,PHP还提供了一个三等分的运算符===,它可能正是您所寻求的。

希望有所帮助。

答案 1 :(得分:4)

您正在比较字符串和整数。必须先将字符串转换为整数,然后PHP将数字字符串转换为整数。由于该字符串的开头是'1',它将第一个与第一个数字进行比较,它们是相等的。

您打算使用哪种功能?

答案 2 :(得分:3)

因为PHP正在执行type conversion,所以它将字符串转换为整数,并且这样做的方法可以使所有数字计数到非数字值。在你的情况下,这是子串('1')(因为,是第一个非数字字符)。如果你用除了数字之外的任何东西开始字符串,你就会得到0。

答案 3 :(得分:1)

答案 4 :(得分:1)

如果您正在尝试检查1是否等于1或3,那么我肯定会这样做:

if (1 == 1 || 1 == 3)

答案 5 :(得分:0)

我猜你想知道变量是否在一系列值中。

您可以使用in_array

if (in_array(1, array(1, 3, 5, 6)))
 echo "in";

答案 6 :(得分:0)

if(in_array(1, array(1,3)) {
    echo "in";
}

答案 7 :(得分:-1)

输出应为:

in

来自PHP的文档:

  

从字符串转换为   整数,PHP分析字符串一   角色一直到找到一个   非数字字符。 (号码可以,   可选地,以+或 - 符号开头。)   结果数字被解析为a   十进制数(基数为10)。失败了   解析有效的十进制数返回   值0。