PHP比较'==';问题
为什么输出是“in”PHP比较'==';问题,php,conditional-operator,Php,Conditional Operator,为什么输出是“in” <?php if (1=='1, 3') { echo "in"; } ?> 输出应为: in 从PHP文档中: 从字符串转换为字符串时 整数,PHP分析字符串1 一次一个字符,直到找到一个 非数字字符。(该号码可为, (可选)以+或-号开头。) 结果数字被解析为 十进制数(以10为基数)。失败 解析有效的十进制数返回 值为0 我猜你想知道一个变量是否在一个值范围内 您可以在数组中使用: if (in_array(1
<?php
if (1=='1, 3')
{
echo "in";
}
?>
输出应为:
in
从PHP文档中:
从字符串转换为字符串时
整数,PHP分析字符串1
一次一个字符,直到找到一个
非数字字符。(该号码可为,
(可选)以+或-号开头。)
结果数字被解析为
十进制数(以10为基数)。失败
解析有效的十进制数返回
值为0
我猜你想知道一个变量是否在一个值范围内 您可以在数组中使用
:
if (in_array(1, array(1, 3, 5, 6)))
echo "in";
您正在比较字符串和整数。必须首先将字符串转换为整数,PHP将数字字符串转换为整数。由于该字符串的开头是“1”,它将数字1与数字1进行比较,两者相等
你想要什么功能?因为PHP正在做,它正在把一个字符串变成一个整数,它的方法是这样做的:它将所有的数字计数,直到一个非数值。在您的例子中,这是子字符串('1')(因为,
是第一个非数字字符)。如果字符串不是以数字开头,则得到0。请参阅PHP文档:
如果您试图检查1是否等于1或3,那么我肯定会这样做:
if (1 == 1 || 1 == 3)
=
运算符对这两个值进行类型转换,以使它们成为相同的类型。在您的示例中,它将把字符串中的第二个值转换为整数,该整数等于1
。这显然等于您匹配的值
如果您的第一个值是引号中的字符串(即'1'
),而不是整数,那么匹配将失败,因为两侧都是字符串,因此它将进行字符串比较,并且它们是不同的字符串
如果您需要一个不进行类型转换的精确匹配运算符,PHP还提供了一个三重相等运算符,==
,这可能是您需要的
希望这能有所帮助。你想实现什么?我还想补充一点,如果他使用“==”(身份比较),他也会比较类型。+1取消-1,因为你解释了为什么会发生这种效果(至少有相关信息)。。。
if (1 == 1 || 1 == 3)