$myArray = array ('SOmeKeyNAme' => 7);
我希望$myArray['somekeyname']
返回7
。 有没有一种方法可以在不操作数组的情况下实现这一点?我没有创建数组,因此无法控制其键。
$CaseMap=[];
foreach ($UserArray as $Key=>$Value)
$CaseMap[strtolower($Key)]=$Key;
那么查找就像这样:
$Value=$UserArray[$CaseMap("key")];
内存开销仅为$CaseMap数组,该数组将短键映射到短键。
如果我没有使用foreach的情况下,我不确定PHP是否有更有效的方法来生成$CaseMap。
我知道这已经过时了,但是如果有其他人需要一种快速简便的方法来实现此操作而不必实际更改原始数组:
function array_key_i($needle, $haystack){
$key=array_search(strtolower($search), array_combine(array_keys($array),array_map('strtolower', array_keys($array))));
return ($key!==false);
}
$array=array('TeSt1'=>'maybe');
$search='test1';
array_key_i($search, $array); // returns true
break
或return
来找到匹配项,以便不进行不必要的迭代。如果你需要适应匹配多个键的可能性,那么你将需要迭代所有的键,并强制所有键转换为小写/大写实际上会破坏你的数据。 - mickmackusa