为什么输出'在'?
<?php
if (1=='1, 3')
{
echo "in";
}
?>
答案 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。