我注意到以下奇怪的事件:
var_dump(in_array("test", array_keys(array("hello"))));
Run Code Online (Sandbox Code Playgroud)
产量: bool(true)
这怎么可能?数组不包含键,因此array_keys()将返回一个空数组.测试不在这个空数组中,为什么它会返回true?这是PHP中的错误吗?
简单的回答:宽松的打字, 'test' == 0
使用
var_dump(in_array("test", array_keys(array("hello")), true));
Run Code Online (Sandbox Code Playgroud)
用于严格打字
并且所有数组都有键,如果你没有显式分配键,那么PHP将根据0的递增整数分配一个(因此'test' == 0).... array_keys()不会为空,因为PHP将分配一个键的0键你的数组条目"hello"