为什么array_search无法识别数组中的第一项?



我很困惑。为什么array_search跳过数组中的第一个元素? in_array只返回布尔值,array_search可以返回任何值 - 是因为这个吗?目前这对我来说毫无意义。 示例代码如下:

<?php
$array = array("Mac", "NT", "Linux");
if (in_array("Mac", $array)) {
echo "Ok n";
} else {
echo "Not ok n";
}
// output: Ok
if (array_search("Mac", $array)){
echo "Ok n";
} else {
echo "Not ok n";
}
// output: Not Ok
$arrayForArraySearch = array('', "Mac", "NT", "Linux"); // add first element
if (array_search("Mac", $arrayForArraySearch)){
echo "Ok n";
} else {
echo "Not ok n";
}
// output: Ok, but it's no longer first item
?>

这是因为array_search返回0这是数组中"Mac"的索引。如果在数组中找不到该项,它将返回false

始终将结果与 false 进行比较:

if (array_search("Mac", $array) !== false) {
...
}

正如在文档中提到的array_search函数一样,返回找到的元素的键。使用您的 if 条件,这会导致 false,因为元素"Mac"的键是0

更改条件以匹配不假 =>if (array_search("Mac", $array) !== false)

最新更新