PHP比较'=='问题

Yos*_*sef 4 php conditional-operator

为什么输出'在'?

<?php
    if (1=='1, 3')
    {
        echo "in";
    }
?>
Run Code Online (Sandbox Code Playgroud)

Spu*_*ley 5

==运营商不键入两个值转换,试图让它们是同一种类型.在您的示例中,它会将字符串中的第二个值转换为整数,该整数将等于1.这显然等于你匹配的值.

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

如果你需要一个不进行类型转换的精确匹配运算符,那么PHP还提供了一个tripple-equal运算符===,这可能是你正在寻找的.

希望有所帮助.


Rud*_*udu 4

因为 PHP 正在执行类型转换,所以它将字符串转换为整数,并且执行此操作的方法可以对所有数字进行计数,直到得出非数字值。在您的情况下,这是子字符串('1')(因为它,是第一个非数字字符)。如果字符串以数字以外的任何内容开头,则会得到 0。