Web Artisan Blog - ウェブ アルチザン ブログ

PHP:定数や変数名を動的に指定したい

PHP

2006年11月16日

アフィリエイトから企業サイト分析まで。訪問者の動きがまるわかりのアクセス解析サービス「リサーチアルチザンプロ」

LINEやSkypeみたいなビデオ通話がブラウザだけでできる!オンライン通話サービス「EZ-Interview - イージーインタビュー」

個人的メモ。
最近飽き気味のPHPですが、やはりまだまだ奥が深い、、ってか知らん事も多いです。

で、タイトルの様な内容なんですが、
プログラム組んでると、定数名や変数名をどうしても動的に参照したい場合なんかがあったります。
どんな時?って、いや、場合によるんですが、あると言えばあるんです。

で今回、個人的にあったのが定数名を動的に参照したい。
例えば、、
define("CONST1","AAAAA");
define("CONST2","BBBBB");
define("CONST3","CCCCC");

という様な定数を用意して、後でループなんかで参照したい。。

そりゃー、
for ($i=1; $i<=3; $i++) {
if ($i==1) {
echo(CONST1);
} elseif($i==2) {
echo(CONST2);
} elseif($i==3) {
echo(CONST3);
}
}

とかif文で聞いていってもできますが、定数追加ごとにif文追加する必要があるし、何よりカッコ悪い。。

こういう場合は、constant関数使えば簡単に出来ます。

constant
constant -- 定数の値を返す



for ($i=1; $i<=3; $i++) {
echo(constant("CONST" . $i));
}

一発で出来ました。。

もちろん、配列とか使っても色々出来ますが、今回は参照するのが定数であるという事。PHPでは定数に配列を指定できない事から、こんなやり方もできるという例です。


また、こういうノリの事を変数に対して行いたい場合は以下の通り。

可変変数
変数名を可変にできると便利なことが時々あります。可変変数では、変数 名を動的にセットし使用できます。


定数のように関数使ってやるもんではないですが、こういうやり方も覚えておいて損は無いでしょうね。。

Web面接に最適。ブラウザだけでビデオ/音声通話ができるオンライン通話サービス。「EZ-Interview - イージーインタビュー」
訪問者録画機能も付いたシンプルで高機能なリアルタイムアクセス解析「リサーチアルチザンプロ」