美しい多次元配列に出会いたい

まっちー

まっちー

今日はちょっとだけ前回の更新に関係があると言いつつもCakePHPに関する事柄というよりはソースを書く上での個人的な意見なのだけど、CakePHPでコーディングをしていると、配列が非常によく出てくる。それも多次元配列である場合が多い。配列の中に配列があって、その中にさらにまた配列があって・・・・・・と、配列の次元(っていう表現で良いのか?)が増えれば増えるほど、見づらい。自分で書いたソースなのに、どうなっているのかパッと見じゃ分からなくなることもままあったりする。

この多次元配列、どう書くのが見やすいだろうかってのを、多次元配列を書くたびに思っているのだけど、いまいちしっくりくるものがない。毎回探り探りで、この書き方は違うな~ってやってる。

例えば、以下のような配列があったとしよう。

$array = array('key1' => array('key2' => array('key3' => 'value1', 'key4' => 'value2'), 'key5' => 'value3'))

これをいかに見やすく、しかも見た目的にも美しく書くにはどうするのが良いのだろうか。

配列ごとに変数を作る

$array1 = array('key3' => 'value', 'key4' => 'value2');

$array2 = array('key2' => $array1, 'key5' => 'value3');

$array3 = array('key1' => $array2);

トータルでは多次元配列だけど、それを一つ一つに分解して書けば、たぶんこんな感じになる。

見やすいという点では十分に及第点のような気もするし、悪くない書き方なのかもしれないけど、何かこう、やたらと変数を増やすのが個人的に気に入らないと言いますか・・・・・・できれば一つの変数にしたい。いや、まあ個人的な気分の問題なんですけど。

配列ごとに改行する

$array = array('key1' =>

 € € € € € € € € € € € € € € € € € € € € array('key2' =>

 € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € array('key3' => 'value1', 'key4' => 'value2'), 'key5' => 'value3',

 € € € € € € € € € € € € € € € € € € € € ),

 € € € € € € € € ) €

閉じかっこの位置が決めづらいし、見た目も奇麗ではない。

配列ごとに改行しつつ、配列の各要素も改行する

$array = array('key1' =>

 € € € € € € € € € € € € € € € € € € € € array('key2' =>

 € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € array('key3' => 'value1',

 € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € 'key4' => 'value2',

 € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € ),

 € € € € € € € € € € € € € € € € € € € € € € € € € € 'key5' => 'value3',

 € € € € € € € € € € € € € € € € € € € € ),

 € € € € € € € € )

一応、前回の更新ではこの書き方を採用してます。自分でソースを書くときも基本的にはこの書き方でやってるんですけど、でも見た目が奇麗かと聞かれると、ちょっと微妙・・・・・・。

他にもいろんなパターンが考えられると思いますが、とりあえずこれくらいにしておいて・・・・・・いずれにしても「これだ!!」という多次元配列の書き方は未だに見つかっていないのが現状ではあります。

最高に美しい多次元配列の書き方を見つけるのは、僕のプログラマ人生の中でのテーマの一つかもしれません。

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL