当我们寻找空字符串时,为什么in_array函数返回TRUE?

时间:2014-12-28 08:29:37

标签: php

有人可以向我解释为什么会这样吗?

in_array('', array(0,1,2));

2 个答案:

答案 0 :(得分:6)

因为,如docs中所述:

  

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

     

使用松散比较搜索 haystack 以获取,除非设置了严格

PHP中的

... '' == 0true。如果你想使用严格的比较,只需用三个参数调用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。

参考documentation