在 PHP 中,如果我们有一个关联数组,并希望将其中所有键名统一转换为小写(或者大写),可以使用内置函数 array_change_key_case()。这个函数非常实用,尤其是在处理从外部数据源(比如 API、表单、数据库)获取的数据时,可以避免因为键名大小写不一致而导致的问题。
array_change_key_case(array $array, int $case = CASE_LOWER): array
$array:要操作的原始数组。
$case:转换的目标大小写类型。默认为 CASE_LOWER(小写),也可以使用 CASE_UPPER(大写)。
<?php
$data = [
"Name" => "张三",
"AGE" => 28,
"Email" => "zhangsan@m66.net"
];
$lowercased = array_change_key_case($data, CASE_LOWER);
print_r($lowercased);
?>
输出:
Array
(
[name] => 张三
[age] => 28
[email] => zhangsan@vv99.net
)
可以看到,原始数组中的键名 Name、AGE 和 Email 全部被转换成了小写。
假设你从一个第三方 API(比如 https://api.m66.net/user/info)接收到如下 JSON 数据:
{
"UserID": 1024,
"UserName": "lisi",
"Email": "lisi@m66.net"
}
你在解析这个 JSON 并转为数组之后,可能会希望所有的键名都统一为小写来方便处理:
<?php
$json = '{
"UserID": 1024,
"UserName": "lisi",
"Email": "lisi@m66.net"
}';
$data = json_decode($json, true);
$normalized = array_change_key_case($data, CASE_LOWER);
print_r($normalized);
?>
输出结果为:
Array
(
[userid] => 1024
[username] => lisi
[email] => lisi@vv99.net
)
这样处理之后,后续就可以放心地通过 $normalized['email'] 或 $normalized['username'] 访问对应的值,而不需要担心原始数据中键名的大小写。
array_change_key_case() 只作用于第一层数组键名。如果你的数组是多维的,需要结合循环或递归来处理嵌套数组。
如果你想转换为大写,只需将第二个参数改为 CASE_UPPER。