В моем случае я хотел эффективное обходное решение, где моя программа уже создавала массив с помощью цикла foreach от данных о клиентах, имеющих неизвестный случай, и я хотел сохранить случай клиента для более позднего дисплея в программе.
Мое решение состояло в том, чтобы создать $CaseMap отдельного массива для отображения данного строчного ключа к mixedcase ключу, используемому в массиве (несоответствующий код опущен здесь):
$CaseMap=[];
foreach ($UserArray as $Key=>$Value)
$CaseMap[strtolower($Key)]=$Key;
Затем поиск похож на это:
$Value=$UserArray[$CaseMap("key")];
и память наверху просто массив $CaseMap, который отображает, по-видимому, короткие ключи к коротким ключам.
я не уверен, имеет ли PHP более эффективный способ генерировать $CaseMap в случае где I'n, не уже использующий foreach.
У меня просто была та же проблема, и я не мог изменить исходный массив. Я использую немного функций массива для него.
Параметры
$search = "AbCd";
$array = array("AbcD"=>"11","Bb"=>"22");
Решение
$lower_search = strtolower($search);
$array_of_keys = array_map("strtolower",array_keys($array));
$idx = array_search($lower_search,$array_of_keys);
if($idx !== FALSE)
echo array_values($array)[$idx];
Делают его короче
if(($idx=array_search(strtolower($search),array_map("strtolower",array_keys($array))))!==FALSE)
echo array_values($array)[$idx];