【问题标题】:Why array_search does not recognize first item in array?为什么 array_search 不能识别数组中的第一项?
【发布时间】:2022-01-13 10:32:07
【问题描述】:

我很困惑。为什么 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() 如果成功则返回密钥 - 即“Mac”的0,转换为false,因此您输入else {...} 块。
  • @berend 将其作为答案输入,以便标记。

标签: php arrays


【解决方案1】:

这是因为 array_search 返回0,这是数组中“Mac”的索引。如果在数组中没有找到该项,则返回false

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多