【问题标题】:array_search function doesn't check first valuearray_search 函数不检查第一个值
【发布时间】:2013-08-01 14:55:47
【问题描述】:

我有一个数组,当我打印它时,它会给我正确的结果,例如:

[0] => info@mail.com,
[1] => 0909,
[2] => info@mail.com22,
[3] => 0909

现在,当我想检查 info@mail.com 是否在数组中时,它会给我一个错误,即该数组中不存在该值,但是当我尝试例如 info@mail.com22 时,它会给出正确的结果.

这是代码的一小部分: $user 是我要搜索的词,$arrayname 是数组。

if (array_search(strtolower($user),array_map('strtolower',$arrayname))){
//value exist
}
else{
//value does not exist
}

现在 info@mail.com 不存在它说,而 info@mail.com22 确实存在。

谁知道?

【问题讨论】:

  • 原因其实在documentation"此函数可能返回布尔值 FALSE,但也可能返回非布尔值,其计算结果为 FALSE。有关更多信息,请阅读布尔值部分。使用 === 运算符测试此函数的返回值。 "
  • 因为它返回零

标签: php arrays search


【解决方案1】:

array_search 返回找到的值的索引。当您搜索第一项时,它返回 0。这也意味着 false。更改您的代码,使其读取

if (false !== array_search(strtolower($user),array_map('strtolower',$arrayname))){

另一种方法是使用in_array

if(in_array(strtolower($user),array_map('strtolower',$arrayname))){

【讨论】:

    【解决方案2】:

    我只是使用is_numeric

    if (is_numeric(array_search(strtolower($user), $arrayname)) {
        /* do something */
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2016-10-05
      • 2012-10-26
      • 2022-01-13
      • 2016-07-23
      相关资源
      最近更新 更多