分かりやすく、使いやすく。

連想配列のキーの大文字・小文字を切り替える方法

スポンサーリンク

PHP で連想配列(ハッシュ)のキーの大文字・小文字を変更するには、 array_change_key_case を使用します。

  1. 通常の配列の場合(一次元配列)
  2. 多次元配列の場合


通常の配列の場合(一次元配列)

キーを大文字に揃えたい場合は第二引数に CASE_UPPER を、小文字に揃えたい場合は CASE_LOWER を指定します。(第二引数を省略した場合は CASE_LOWER になります。)

サンプルコードは次の通りです。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ary = array(
           "Id"   => "A00001m",
           "Name" => "Michael"
       );
 
// 連想配列のキーを小文字にそろえる。
$ary = array_change_key_case($ary, CASE_LOWER);
 
var_dump($ary);
 
// 連想配列のキーを大文字にそろえる。
$ary = array_change_key_case($ary, CASE_UPPER);
 
var_dump($ary); 

上記の実行結果は次の通りです。

array(2) {
  ["id"]=>
  string(7) "A00001m"
  ["name"]=>
  string(7) "Michael"
}
array(2) {
  ["ID"]=>
  string(7) "A00001m"
  ["NAME"]=>
  string(7) "Michael"
} 

多次元配列の場合

二次元配列やそれ以上の次元をもつ連想配列のキーについて大文字・小文字を一括で切り替えるサンプルコードです。

サンプルコードでは独自の関数を定義して再帰的に array_change_key_case を適用しています。(array_walk_recursive ではキーの更新ができない為、 foreach で再帰的に処理します。)

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ary = array(
           array("Key1" => "Val1", "Key2" => "Val2"),
           array(
               array("Key3" => "Val3"),
               array(
                   array("Key4" => "Val4", "Key5" => "Val5"),
                   array("Key6" => "Val6"),
               )
           ),
           array("Key7" => "Val7", "Key8" => "Val8"),
       );
 
// 多次元配列のキーを小文字にそろえる。
$ary = array_change_key_case_recursive($ary, CASE_LOWER);
 
print "◆キーを小文字に揃えた結果" . PHP_EOL;
var_dump($ary);
 
// 多次元配列のキーを大文字にそろえる。
$ary = array_change_key_case_recursive($ary, CASE_UPPER);
 
print "◆キーを大文字に揃えた結果" . PHP_EOL;
var_dump($ary);
 
// 配列を再帰的に探索し array_change_key_case を適用する関数
function array_change_key_case_recursive($ary, $case = CASE_LOWER){
    if(is_array($ary)){
        $ary = array_change_key_case($ary, $case);
    }
    
    foreach($ary as $key => $val){
        if(is_array($val)){
            $ary[$key] = array_change_key_case_recursive($val, $case);
        }
    }
    
    return $ary;
} 

上記の実行結果は次の通りです。

◆キーを小文字に揃えた結果
array(3) {
  [0]=>
  array(2) {
    ["key1"]=>
    string(4) "Val1"
    ["key2"]=>
    string(4) "Val2"
  }
  [1]=>
  array(2) {
    [0]=>
    array(1) {
      ["key3"]=>
      string(4) "Val3"
    }
    [1]=>
    array(2) {
      [0]=>
      array(2) {
        ["key4"]=>
        string(4) "Val4"
        ["key5"]=>
        string(4) "Val5"
      }
      [1]=>
      array(1) {
        ["key6"]=>
        string(4) "Val6"
      }
    }
  }
  [2]=>
  array(2) {
    ["key7"]=>
    string(4) "Val7"
    ["key8"]=>
    string(4) "Val8"
  }
}
◆キーを大文字に揃えた結果
array(3) {
  [0]=>
  array(2) {
    ["KEY1"]=>
    string(4) "Val1"
    ["KEY2"]=>
    string(4) "Val2"
  }
  [1]=>
  array(2) {
    [0]=>
    array(1) {
      ["KEY3"]=>
      string(4) "Val3"
    }
    [1]=>
    array(2) {
      [0]=>
      array(2) {
        ["KEY4"]=>
        string(4) "Val4"
        ["KEY5"]=>
        string(4) "Val5"
      }
      [1]=>
      array(1) {
        ["KEY6"]=>
        string(4) "Val6"
      }
    }
  }
  [2]=>
  array(2) {
    ["KEY7"]=>
    string(4) "Val7"
    ["KEY8"]=>
    string(4) "Val8"
  }
} 
スポンサーリンク
スポンサーリンク