假设我有一个如下所示的数组:
$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功能(虽然这个教育期永远不会结束)。
答案 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
}