当前位置: 首页> 最新文章列表> array_change_key_case() 是否会影响数组的值?

array_change_key_case() 是否会影响数组的值?

M66 2025-04-26

在 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
)

可以看到,键名都变成了小写,而值依然是原来的内容,没有被更改。

示例二:键名变大写,值包含数组和 URL

$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() 是一个非常安全可靠的工具。