传递空数组时,in_array函数返回true

时间:2014-08-26 00:20:24

标签: php

我注意到以下奇怪的事情:

var_dump(in_array("test", array_keys(array("hello"))));

收益率:bool(true)

这怎么可能?数组不包含键,因此array_keys()将返回一个空数组。测试不在这个空数组中,为什么它会返回true?这是PHP中的错误吗?

1 个答案:

答案 0 :(得分:5)

简单回答:宽松的打字,'test' == 0

使用

var_dump(in_array("test", array_keys(array("hello")), true));

严格打字

所有 数组都有键,如果你没有显式分配键,那么PHP将根据0的递增整数分配一个(因此{{1} }).... array_keys()不会为空,因为PHP会将'test' == 0的键分配给0的数组条目