$myArray = array ('SOmeKeyNAme' => 7);
我要$myArray['somekeyname']
换7
我不创建数组,因此无法控制它的键
$myArray = array ('SOmeKeyNAme' => 7);
我要$myArray['somekeyname']
换7
我不创建数组,因此无法控制它的键
如果不进行线性搜索或更改原始数组,您就无法做到这一点.最有效的方法是在插入和查找值时对键使用strtolower.
$myArray[strtolower('SOmeKeyNAme')]=7;
if (isset($myArray[strtolower('SomekeyName')]))
{
}
如果保留密钥的原始大小写对您很重要,您可以将其存储为该密钥的附加值,例如.
$myArray[strtolower('SOmeKeyNAme')]=array('SOmeKeyNAme', 7);
当您更新了这个问题以表明这对您来说是不可能的时,您如何创建一个数组来提供小写和区分大小写版本之间的映射?
$keys=array_keys($myArray);
$map=array();
foreach($keys as $key)
{
$map[strtolower($key)]=$key;
}
现在您可以使用它从小写密钥中获取区分大小写的密钥
$test='somekeyname';
if (isset($map[$test]))
{
$value=$myArray[$map[$test]];
}
这就避免了使用小写键创建数组的完整副本的需要,而这实际上是实现这一点的唯一其他方法.
如果不需要制作数组的完整副本,那么可以使用array_change_key_case来创建具有小写键的副本.
$myCopy=array_change_key_case($myArray, CASE_LOWER);