LoginSignup
3
4

More than 5 years have passed since last update.

PHPの配列のkeyをスネークケースからキャメルケースに変換する

Posted at

配列のkeyをスネークケースからキャメルケースに変換する処理


function camelizeArrayRecursive(array $array)
{
    $results = [];
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $results[Illuminate\Support\Str::camel($key)] = camelizeArrayRecursive($value);
        } else {
            $results[Illuminate\Support\Str::camel($key)] = $value;
        }
    }
    return $results;
}

※ 依存モジュールがあります。composerとかで、Illuminate\Supportのモジュールをインストールしてください。Laravel使っている方は、デフォで入ってます。

使うとこんな感じ


$array = [
    'id' => 1,
    'name' => 'name1',
    'zip_code' => '111-0001',
    'comments' => [
        [
            'blog_id' => 1,
            'comment' => 'comment11',
            'zip_code' => '111-0011',
        ],
        [
            'blog_id' => 1,
            'comment' => 'comment12',
            'zip_code' => '111-0012',
        ],
    ],
];
$_array = camelizeArrayRecursive($array);
=> [
     "id" => 1,
     "name" => "name1",
     "zipCode" => "111-0001",
     "comments" => [
       [
         "blogId" => 1,
         "comment" => "comment11",
         "zipCode" => "111-0011",
       ],
       [
         "blogId" => 1,
         "comment" => "comment12",
         "zipCode" => "111-0012",
       ],
     ],
   ]

あとがき


Eloquent ORMいじっていた時に、テーブルのカラム名がスネークケースからキャメルケースに変えられないので、変える処理を書いてみた。

基本的にORMが嫌いなのですが、Eloquent ORM良いよと言われて、調べてた時の副産物です。
(触ってもいないのにディスれない的な)(Eloquent ORMの話は別記事で)

PHPの標準関数「array_walk_recursive」もkeyを変える場合は使えないし、Eloquent ORMも、スネークからキャメルに変える需要はありそうなのに提供してないしで、えいやっと書きました。性能面を考えると参照渡ししたほうがよさそうですが、バグが無いほうが良いかなぁと、とりあえずやってないです。(使うときは、処理速度測ったり、テスト書いて使わないとですね。)

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4