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についてもっと質問がある場合は、お気軽にお問い合わせください!