【发布时间】:2011-05-26 16:43:52
【问题描述】:
为什么输出'in'?
<?php
if (1=='1, 3')
{
echo "in";
}
?>
【问题讨论】:
为什么输出'in'?
<?php
if (1=='1, 3')
{
echo "in";
}
?>
【问题讨论】:
== 运算符对两个值进行类型转换,以尝试使它们成为相同的类型。在您的示例中,它将第二个值从字符串转换为整数,等于1。这显然等于您匹配的值。
如果您的第一个值是字符串 - 即引号中的 '1',而不是整数,那么匹配将失败,因为双方都是字符串,所以它会进行字符串比较,它们是不同的字符串。
如果您需要一个不进行类型转换的完全匹配运算符,PHP 还提供了一个三等号运算符 ===,这可能是您正在寻找的。p>
希望对您有所帮助。
【讨论】:
因为 PHP 正在执行type conversion,它将字符串转换为整数,并且这样做的方法可以将所有数字计数到非数字值为止。在您的情况下,这是子字符串 ('1') (因为 , 是第一个非数字字符)。如果你的字符串不是以数字开头,你会得到 0。
【讨论】:
您正在比较一个字符串和一个整数。字符串必须先转换为整数,PHP 将数字字符串转换为整数。由于该字符串的开头是 '1',它比较数字 1 和数字 1,它们是相等的。
你想要什么功能?
【讨论】:
如果您要检查 1 是否等于 1 或 3,那么我肯定会这样做:
if (1 == 1 || 1 == 3)
【讨论】:
【讨论】:
我猜你想知道一个变量是否在一个值范围内。
你可以使用in_array:
if (in_array(1, array(1, 3, 5, 6)))
echo "in";
【讨论】:
if(in_array(1, array(1,3)) {
echo "in";
}
【讨论】:
输出应该是:
in
来自 PHP 的文档:
从字符串转换为 整数,PHP分析字符串一 一次一个字符,直到找到一个 非数字字符。 (数字可能, 可选地,以 + 或 - 号开头。) 结果数字被解析为 十进制数(以 10 为底)。一次失败 解析一个有效的十进制数返回 值 0。
【讨论】: