當前位置: 首頁> 最新文章列表> 如何使用array_change_key_case() 遞歸轉換多維數組的鍵?

如何使用array_change_key_case() 遞歸轉換多維數組的鍵?

M66 2025-04-24

在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 的問題,歡迎隨時交流!