PHP - array_change_key_case() 函数


定义和用法

功能

array_change_key_case() 用于将数组的所有键名(key)转换为全大写或全小写形式。它返回一个新数组,原数组保持不变。默认情况下,此函数返回小写键。

语法

array array_change_key_case(array $array, int $case = CASE_LOWER)

参数

参数 描述
$array(必填) 要处理的输入数组。
$case(可选) 指定转换模式,可选值为:
  • CASE_LOWER(默认):将键名转换为小写。
  • CASE_UPPER:将键名转换为大写。

返回值

  • 返回键名转换后的新数组。
  • 若输入参数不是数组,返回 null 并触发警告。

示例

1. 默认转换为小写

$input = ["Apple" => 1, "Banana" => 2, "Orange" => 3];
$result = array_change_key_case($input);
print_r($result);

输出:

Array
(
    [apple] => 1
    [banana] => 2
    [orange] => 3
)

2. 显式转换为大写

$input = ["Apple" => 1, "Banana" => 2];
$result = array_change_key_case($input, CASE_UPPER);
print_r($result);

输出:

Array
(
    [APPLE] => 1
    [BANANA] => 2
)

3. 混合键类型处理

$input = [10 => "A", "Color" => "Red", "FRUIT" => "Mango"];
$result = array_change_key_case($input);
print_r($result);

输出:

Array
(
    [10] => A // 整数键不变
    [color] => Red // 原字符串键转为小写
    [fruit] => Mango // 原大写的键转为小写
)

注意事项

1. 键名冲突处理

如果转换后键名重复,后面的值会覆盖前面的值:

$input = ["Name" => "Alice", "NAME" => "Bob"];
$result = array_change_key_case($input);
print_r($result);

输出:

Array
(
    [name] => Bob // "NAME" 转换为小写后覆盖了 "Name"
)

2. 仅处理字符串键

整数键不会被转换:

$input = [5 => "Five", "Five" => 5];
$result = array_change_key_case($input, CASE_UPPER);
print_r($result);

输出:

Array
(
    [5] => Five // 整数键保留
    [FIVE] => 5 // 字符串键转为大写
)

3. 多维数组限制

该函数仅处理一维数组的键,不会递归处理子数组:

$input = ["User" => ["Name" => "Alice"], "Role" => "Admin"];
$result = array_change_key_case($input, CASE_UPPER);
print_r($result);

输出:

Array
(
    [USER] => Array ( [Name] => Alice ) // 外层键转大写,内层键未处理
    [ROLE] => Admin
)

4. 非数组输入报错

如果传入非数组参数,会触发警告:

$result = array_change_key_case("not_an_array");
// 输出 Warning 并返回 null

常见使用场景

  • 统一数组键名的大小写,便于后续处理(如比较或遍历)。
  • 忽略键名大小写差异,例如从数据库或API接收的数据键名可能大小写不统一。

总结

array_change_key_case() 是处理数组键名大小写的便捷工具,但需注意键冲突和类型限制。结合具体需求合理使用,可有效提升代码的健壮性。