我有这样的剧本
$number = range(0, 9);
当我有这样的条件时
if (in_array('@', $number) === true) {
echo "true";
}else "false";
并输出:
true
我的问题是为什么这些符号与数字$ number中的任何数字相同? 我希望符号只是符号而不是数字。
例子我想要这样
if (in_array('@', $number) === true) {
echo "true";
}else "false";
输出:
false
答案 0 :(得分:5)
来自documentation for in_array()
:
如果第三个参数strict设置为
TRUE
,那么in_array()
函数也会检查大海捞针的类型。
在PHP中,转换任何不以数字开头的字符串的计算结果为0.数组中存在0,因此in_array()
返回true。如果您不希望发生这种情况,请将in_array()
的第三个参数设置为true,以便执行强比较(相当于===
)并考虑类型。
if (in_array('@', $number, true) === true) {
echo "true";
}
else {
echo "false";
}
输出:
false