$myArray = array ('SOmeKeyNAme' => 7);
我想$myArray['somekeyname']回来7。 有没有一种方法,而无需操纵数组?
我不创建数组,因此无法控制其键 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
选项1-更改创建数组的方式 如果没有线性搜索或更改原始数组,就无法执行此操作。最有效的方法是在插入AND和查找值时在键上使用strtolower。
$myArray[strtolower('SOmeKeyNAme')]=7;
if (isset($myArray[strtolower('SomekeyName')])) {
} 如果保留密钥的原始大小写对您很重要,则可以将其存储为该密钥的附加值,例如
$myArray[strtolower('SOmeKeyNAme')]=array('SOmeKeyNAme', 7); 选项2-创建辅助映射 当您更新问题以建议您无法做到这一点时,如何创建一个提供小写和区分大小写版本之间映射的数组呢?
$keys=array_keys($myArray); $map=array(); foreach($keys as $key) { $map[strtolower($key)]=$key; } 现在,您可以使用它从小写的小写字母获取区分大小写的密钥
$test='somekeyname'; if (isset($map[$test])) { $value=$myArray[$map[$test]]; } 这样就避免了使用小写键创建数组的完整副本的情况,这实际上是解决此问题的唯一方法。
选项3-创建阵列的副本 如果不需要对数组进行完整复制,则可以使用array_change_key_case创建具有小写字母键的副本。
$myCopy=array_change_key_case($myArray, CASE_LOWER);