在PHP 中, array_change_key_case()是一個非常實用的函數,它可以將數組中所有的鍵名轉換為小寫或大寫。不過,這個函數默認只對一維數組生效。如果你有一個多維數組,並希望將所有層級的鍵名都統一轉換為大寫或小寫,就需要遞歸地使用這個函數。
本文將介紹如何使用PHP 遞歸地將一個多維數組的所有鍵名轉換成小寫或大寫。
$input = ['Name' => 'Alice', 'Age' => 25];
$result = array_change_key_case($input, CASE_LOWER);
// 輸出:['name' => 'Alice', 'age' => 25]
print_r($result);
上述代碼可以將一維數組的鍵名全部轉換為小寫。如果數組是多維的,就不能直接使用它來處理內部數組的鍵名了。
下面是一個自定義函數,它可以遞歸地將任意深度的數組鍵名統一轉換為小寫或大寫。
function array_change_key_case_recursive(array $array, int $case = CASE_LOWER): array {
$result = [];
foreach ($array as $key => $value) {
// 轉換當前層的鍵名
$newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
// 如果值還是數組,遞歸調用
if (is_array($value)) {
$result[$newKey] = array_change_key_case_recursive($value, $case);
} else {
$result[$newKey] = $value;
}
}
return $result;
}
$data = [
'User' => [
'Name' => 'Bob',
'Email' => 'bob@m66.net'
],
'Meta' => [
'Created' => '2025-04-11',
'Tags' => ['PHP', 'Array']
]
];
$lowerCased = array_change_key_case_recursive($data, CASE_LOWER);
print_r($lowerCased);
輸出結果:
Array
(
[user] => Array
(
[name] => Bob
[email] => bob@vv99.net
)
[meta] => Array
(
[created] => 2025-04-11
[tags] => Array
(
[0] => PHP
[1] => Array
)
)
)
$upperCased = array_change_key_case_recursive($data, CASE_UPPER);
print_r($upperCased);
輸出結果:
Array
(
[USER] => Array
(
[NAME] => Bob
[EMAIL] => bob@vv99.net
)
[META] => Array
(
[CREATED] => 2025-04-11
[TAGS] => Array
(
[0] => PHP
[1] => Array
)
)
)
雖然array_change_key_case()本身只支持一維數組,但通過遞歸的方法,我們可以輕鬆地擴展其能力,處理任意嵌套層級的數組。在處理API 請求數據、配置數組等場景時,這個技巧會非常實用。
希望這篇文章能幫你更靈活地使用PHP 操作數組。如果你有更多關於PHP 的問題,歡迎隨時交流!