開発をしていて必ず必要となってくるのが定数。
定数には配列を入れることができず、文字列や数字などしか扱えませんが
今回は一工夫加えて定数に配列を入れてみます。
PHPドキュメント -定数
define('DEBUG_MODE',true); define('TITLE_STR','タイトル(仮)');
CakePHPのFormHelperなんかは配列を使ってプルダウンを作成したりします。
「これ、定数として持っときたいよなぁ…」って思ってても定数に配列を持つことができない。
でもちょっと一工夫すると配列を定数にブチ込むことができます。
定数に配列を入れてみよう!
ちょっとした一工夫・・みんなの大好きなJSONを使います。
//キーなしの一次元配列 define('VAR_LIST','[100,200,300]'); //キーありの三次元配列 define('VAR_LIST_2', '{ "member": [ { "name": "佐藤", "home":"神奈川", "email": "abc@example.co.jp" }, { "name": "田中", "home":"東京", "email": "ex12@example.co.jp" }, { "name": "山田", "home":"北海道", "email": "a123@example.co.jp" } ]}'); //これでできあがり $data = json_decode(VAR_LIST,true); $data2 = json_decode(VAR_LIST_2,true);
文字列としてJSONを定数に放り込み、使うときにjson_decodeをかけてやります。
そうすることで配列として取り出すことができます。
ただし、デメリットとして
- json_decodeが必要なため処理のステップが増える。
- JSONの文字列に誤りがあると重大なバグに繋がる。
ということが挙げられます。
そして他にもstr_getcsv関数を使用した方法があります。
str_getcsv
define('VAR_LIST', '田中,佐藤,山田'); //CSV形式の文字列を配列に変換 $list = str_getcsv(VAR_LIST);
常用はお勧めしませんが、いざという時に便利なので覚えておきましょう。
コメント