在 PHP 中,array_change_key_case() 是一个非常实用的函数,常用于将关联数组的键名统一转为大写或小写。在实际使用中,有些开发者会疑惑:这个函数?
答案是:是的,array_change_key_case() 只会改变数组中的键名,不会对值进行任何处理。
array_change_key_case(array $array, int $case = CASE_LOWER): array
$array:要处理的原数组。
$case:键名转换的方式,默认是 CASE_LOWER,可以选择 CASE_UPPER。
$data = [
"Name" => "Alice",
"Email" => "alice@m66.net",
"AGE" => 25
];
$lowerKeys = array_change_key_case($data, CASE_LOWER);
print_r($lowerKeys);
输出结果:
Array
(
[name] => Alice
[email] => alice@vv99.net
[age] => 25
)
可以看到,键名都变成了小写,而值依然是原来的内容,没有被更改。
$user = [
"username" => "bob",
"profile" => [
"email" => "bob@m66.net",
"website" => "https://m66.net/user/bob"
]
];
$upperKeys = array_change_key_case($user, CASE_UPPER);
print_r($upperKeys);
输出结果:
Array
(
[USERNAME] => bob
[PROFILE] => Array
(
[email] => bob@vv99.net
[website] => https://m66.net/user/bob
)
)
注意到,PROFILE 是个嵌套数组,它的键名并没有被转换,因为 array_change_key_case() 不会递归处理嵌套数组的键名,它只对一维数组生效。
? array_change_key_case() 会修改数组中的键名,但不会动到值。
? 它不会递归处理嵌套数组的键名。
?? 值的内容无论是字符串、URL、数组或其他类型,都会原封不动地保留下来。
因此,如果你只是想规范键名的大小写(比如统一为小写),又不希望改动数组中保存的数据,那么 array_change_key_case() 是一个非常安全可靠的工具。