如何不使用foreach循环将PHP关联数组的所有键转为小写?
无需foreach循环转换数组键为小写的方法
当然有更简洁的实现方式!PHP其实提供了专门的工具函数来处理这类数组键名转换需求,另外还有组合函数的方案,都不用手动写foreach循环。
方法1:使用PHP内置函数 array_change_key_case()
这是最直接高效的方案,PHP专门提供了array_change_key_case()函数来统一转换数组键名的大小写,默认就是转为小写:
// 直接将原数组的所有键转为小写 $multiple_role_will_redirect = array_change_key_case($get_multiple_role_will_redirect, CASE_LOWER);
- 第二个参数
CASE_LOWER是默认值,也可以省略不写,直接调用array_change_key_case($get_multiple_role_will_redirect)也能得到键名全小写的数组。 - 如果后续需要转大写,只需要把参数换成
CASE_UPPER即可。
方法2:用array_combine() + array_map()组合实现
如果出于某些场景不想用专门的键转换函数,也可以通过组合这两个函数来实现:
// 先把原数组的所有键转成小写 $lowercase_keys = array_map('strtolower', array_keys($get_multiple_role_will_redirect)); // 用小写键名和原数组的值重新组合成新数组 $multiple_role_will_redirect = array_combine($lowercase_keys, $get_multiple_role_will_redirect);
为什么你之前的array_filter()方法无效?
array_filter()的核心作用是过滤数组的元素(值):它会遍历数组的每个值,传入回调函数判断是否保留该元素,完全不会处理数组的键名。所以用它来转换键名自然不会有效果~
内容的提问来源于stack exchange,提问作者Shibbir
相关产品推荐
相关产品推荐

