众所周知,in_array()
函数可用于检查数组是否包含某个值。但是,当数组包含值0
时,空值或null
值也会通过测试。
例如
<?php
$testing = null;
$another_testing = 0;
if ( in_array($testing, [0,1,5,6,7]) )
echo "Found";
else
echo "Not Found";
echo "<br>";
if ( in_array($another_testing, [0,1,5,6,7]) )
echo "Found";
else
echo "Not Found";
?>
在这两种情况下都会打印"Found"
。但我希望第一个案例打印"Not Found"
,第二个案例打印"Found"
。
我知道我可以通过添加额外的if
语句或编写我自己的函数来解决问题,但我想知道PHP中是否有任何可以执行检查的内置函数。
答案 0 :(得分:1)
null == 0
这一事实解释了这种行为。但是null !== 0
。换句话说,您也应该检查类型。
您不需要其他功能。只需将true
作为第三个参数传递:
in_array($testing, [0,1,5,6,7], true)
在这种情况下,in_array()
也会检查类型。