現在の位置: ホーム> 最新記事一覧> array_change_key_case()を使用して多次元配列のキーを再帰的に変換する方法は?

array_change_key_case()を使用して多次元配列のキーを再帰的に変換する方法は?

M66 2025-04-24

PHPでは、 array_change_key_case()は、配列内のすべてのキー名を小文字または大文字に変換する非常に実用的な関数です。ただし、この関数は、デフォルトでは1次元配列にのみ有効です。多次元配列があり、すべてのレベルのキー名を大文字または小文字に均一に変換したい場合は、この機能を再帰的に使用する必要があります。

この記事では、多次元配列のすべてのキー名をPHPを使用して小文字または大文字に再帰的に変換する方法について説明します。

基本的な使用法のレビュー

$input = ['Name' => 'Alice', 'Age' => 25];
$result = array_change_key_case($input, CASE_LOWER);

// 出力:['name' => 'Alice', 'age' => 25]
print_r($result);

上記のコードは、1次元配列のすべてのキー名を小文字に変換できます。配列が多次元の場合、それを直接使用して内部配列のキー名を処理することはできません。

再帰変換を実装する関数

以下は、任意の深さの配列キー名を小文字または大文字に再帰的に変換するカスタム関数です。

 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()自体は1次元の配列のみをサポートしますが、再帰的な方法を介して、ネストされた階層で配列を処理する機能を簡単に拡張できます。この手法は、API要求データを処理し、配列の構成、その他のシナリオを処理する場合に非常に実用的です。

この記事がPHPオペランドアレイをより柔軟に使用するのに役立つことを願っています。 PHPについてもっと質問がある場合は、お気軽にお問い合わせください!