このエントリーが役に立ったらシェアをお願いします!

[PHP]定数に配列を入れる方法

このエントリーが役に立ったらシェアをお願いします!

開発をしていて必ず必要となってくるのが定数
定数には配列を入れることができず、文字列や数字などしか扱えませんが
今回は一工夫加えて定数に配列を入れてみます。

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);

常用はお勧めしませんが、いざという時に便利なので覚えておきましょう。

スポンサーリンク

このエントリーが役に立ったらシェアをお願いします!

1この記事を書いた人
ShoheiTai
フロントエンド志向のWebエンジニア。
HTML5やWeb高速化、SEO等のフロントエンド開発が大好物。
バックエンドではCakePHP,Wordpress開発を主戦場としています。
Web開発のスパイスファクトリー株式会社創業メンバー。

イケてないコード - Webエンジニアのブログの
最新情報をいいねしてチェックしよう!