LIGのメルマガ、はじめました!
LIGのメルマガ、はじめました!
2009.05.25

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

まっちー

今日はちょっとだけ前回の更新に関係があると言いつつも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',

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

 € € € € € € € € )

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

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

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