当前位置: 首页> 最新文章列表> 使用 array_change_key_case() 会修改原数组吗?

使用 array_change_key_case() 会修改原数组吗?

M66 2025-04-24

在 PHP 中,array_change_key_case() 是一个非常实用的函数,它的作用是将数组中所有键名的大小写进行统一转换,默认是转换为小写字母。这个函数常用于处理来自不同来源的数据时,确保键名格式的一致性。

那么问题来了:使用 array_change_key_case() 会修改原数组吗?

答案:不会修改原数组

array_change_key_case() 是一个非破坏性函数,也就是说它不会直接修改传入的原始数组,而是返回一个键名经过大小写转换之后的新数组。如果你希望保留修改后的结果,必须将其赋值给一个变量。

示例代码

<?php
$original = [
    "Name" => "Alice",
    "AGE" => 25,
    "Email" => "alice@m66.net"
];

// 使用 array_change_key_case 不会修改原数组
$changed = array_change_key_case($original, CASE_LOWER);

print_r($original);
echo "--------\n";
print_r($changed);
?>

输出结果:

Array
(
    [Name] => Alice
    [AGE] => 25
    [Email] => alice@vv99.net
)
--------
Array
(
    [name] => Alice
    [age] => 25
    [email] => alice@vv99.net
)

可以看到,$original 数组保持不变,而 $changed 是一个新数组,键名已经被转换成了小写。

参数说明

array_change_key_case(array $array, int $case = CASE_LOWER): array
  • $array:要处理的输入数组。

  • $case:可选,指定转换类型:

    • CASE_LOWER(默认):转换为小写。

    • CASE_UPPER:转换为大写。

注意事项

  • 该函数仅作用于一维数组,不会递归处理多维数组的键名。

  • 如果转换后的键名存在重复,会导致值被覆盖。例如,["a" => 1, "A" => 2] 转换为小写后会变成 ["a" => 2]

总结

array_change_key_case() 是 PHP 中处理数组键名大小写的便捷工具,它不会修改原数组,而是返回一个新的数组。记住:使用它时一定要接住返回值,否则转换将毫无意义。

希望这篇文章能帮你更清楚地理解 array_change_key_case() 的用法和特性!