php中的符号和十进制数字为true

时间:2014-04-07 16:09:46

标签: php arrays conditional-statements

我有这样的剧本

$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

1 个答案:

答案 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