在PHP中根据字符串匹配查找数组的键?

时间:2012-01-13 20:56:31

标签: php arrays

假设我有一个如下所示的数组:

$array[0] = 'House';
$array[1] = 'Condo';
$array[2] = 'Townhouse';
$array[3] = 'Land';

如果我传递的var包含“condo”或“Condo”(换句话说,不区分大小写),我想返回1,表示$ array [1]匹配“condo”或“Condo”或“公寓”。

基本上我想要:

$search = 'Condo';
$key = get_property_key($search, $array);
// $key should return 1

有快速的PHP方法吗?或者我是否需要编写自己的函数来循环?如果是后者,你不需要为我写出这个功能 - 我可以自己处理。但是我希望在我的“教育”期间我错过了一个PHP功能(虽然这个教育期永远不会结束)。

5 个答案:

答案 0 :(得分:8)

对于不区分大小写的搜索没有内置功能,但这可以基于普通的array_search()

进行操作
 array_search(strtolower($search),array_map('strtolower',$array)); 

答案 1 :(得分:3)

您可以使用array_search,虽然这是区分大小写的。对于不区分大小写的array_search,您可以执行以下操作:

function get_property_key($needle, $haystack){
    return array_search(strtolower($needle), array_map('strtolower', $haystack));
}

答案 2 :(得分:0)

这样的事情

    foreach($array as $i){
        if(strtolower($i) == strtolower($query)){
            //do something
            return;
        }
    }

答案 3 :(得分:-1)

没有内置功能;你必须自己动手。我不确定这是否适合您的需求,但是关于使用较低的套件版本索引数组,然后寻找$ array [strtolower($ search))]

答案 4 :(得分:-1)

为什么不使用您要搜索的值的键名填充数组,进行规范化,使其始终为小写:

$array['condo'] = true;
$array['land']  = true;
//and so on

//and then the search becomes really fast
if (isset($array[strtolower($search)])) {
  //element found
}