【问题标题】:Array search always returns false even if it's not数组搜索总是返回 false,即使它不是
【发布时间】:2015-06-12 02:20:15
【问题描述】:

好吧,现在已经很晚了,我的工作时间太长了,所以这就是为什么我无法理解这里的问题所在。我有一个数组:

Array
(
    [bob] => 
    [mike-2] => 
    [tara] => example.com
)

我想获取值的键搜索,所以我使用 array_search:

// With an if statement...
if(in_array($_SERVER['SERVER_NAME'], $array)!==false)
{
    // something
}

// ... and also directly with this
$key = array_search($_SERVER['SERVER_NAME'], $array);
echo $key;

结果?总是假的!我在寻找 example.com 时无法获得 tara。我到底错过了什么?我什至尝试将 $_SERVER['SERVER_NAME'] 直接替换为“example.com”,但当然它仍然不起作用。

编辑:这是一个拼写错误……该死。我为此浪费了 2 个小时。

【问题讨论】:

  • 数组有问题吗?你能先用 PHP 打印你的数组吗?
  • 当然。阵列完全没问题。我可以看到所有元素、键和值。
  • 这个问题可能会有所帮助。 stackoverflow.com/questions/21809116/…
  • array_search() 区分大小写,这会让你失望吗? $array 的值中是否有尾随空格? array_search('example.com', $array) 是否按预期工作?
  • 天哪。我找到了探针。我不敢相信我因为拼写错误浪费了 2 个小时。我正在寻找一个字符串“hcm”,但它是“hmc”。该死!无论如何,谢谢你的帮助。

标签: php arrays function


【解决方案1】:

停止工作。这是一个实际的答案。停下来。每当你在一个错字上浪费两个小时时,你对任何人都没有好处,尤其是你自己。

休息一下,你不会有这样的结果。

【讨论】:

    【解决方案2】:

    试试这个

        $test= array('bob' => '','mike' => '','tara' => 'serverName');
    while(list($key,$value) = each($test))
    {
        if($value==$_SERVER['SERVER_NAME'])
        {
            echo $key;
            break;
        }
    }
    

    【讨论】:

      【解决方案3】:

      数组搜索区分大小写,$_SERVER['SERVER_NAME'] 将返回大写名称,因此您必须将其转换为小写才能正常工作, 另外尝试将数组也映射为小写 试试给定的例子

      $data = 数组

      (
          'bob' =>'', 
          'mike-2' =>'', 
          'tara' =>'example.com'
      );
      array_search(strtolower($_SERVER['SERVER_NAME']), array_map('strtolower', $data));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2017-07-11
        • 2022-06-28
        • 1970-01-01
        • 1970-01-01
        • 2017-08-23
        • 1970-01-01
        相关资源
        最近更新 更多