我在使用PHP函数时发现了一些奇怪的行为in_array()
.我有这样一个数组:
$arr = [TRUE, "some string", "something else"];
Run Code Online (Sandbox Code Playgroud)
现在,如果我想检查是否"test"
在数组中它显然不是,但in_array()
仍然返回TRUE,为什么呢?
$result = in_array("test", $arr);
var_dump($result); //Output: bool(true)
Run Code Online (Sandbox Code Playgroud)
使用时会发生同样的事情array_search()
:
$result = array_search("test", $arr);
var_dump($result); //Output: int(0)
Run Code Online (Sandbox Code Playgroud)
我想也许数组中的值TRUE会自动导致函数为每个结果返回TRUE,而不检查数组的其余部分,但我找不到任何可能表明非常奇怪的功能的文档.
我的in_array
功能有问题.
这是我的array
:键可以是字符串或int的混合,就像这个例子.
<?php
$array = array(
"a" => true,
"b" => true,
"c" => true,
"d" => true,
0 => "Code",
1 => "Time",
2 => "Other"
);
var_dump($array);
if ( in_array("Test", $array) ) { echo "found"; }
Run Code Online (Sandbox Code Playgroud)
此代码打印始终found
.
为什么?