有人可以向我解释为什么会这样吗?
in_array('', array(0,1,2));
答案 0 :(得分:6)
因为,如docs中所述:
PHP中的
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
使用松散比较搜索 haystack 以获取针,除非设置了严格。
... '' == 0
为true。如果你想使用严格的比较,只需用三个参数调用in_array()
:
in_array('', array(0, 1, 2), true); // false
...因此也会检查类型,字符串''
没有机会与Numbers匹配。
答案 1 :(得分:2)
in_array
默认执行松散比较。因此''
相当于0
。
in_array
函数有第三个参数(布尔值),表示匹配是否以STRICT方式执行。
如果你in_array('', array(0,1,2), TRUE);
,则结果将为false。