[PHP][可変変数] 変数名や関数名を動的に指定する

連番の変数や関数名を for で処理するときなど、
動的に名前を指定したいときがある。
そのときは「可変変数」「可変関数」を使用するようだ。
以下メモメモ。。


■可変変数
PHP: 可変変数 – Manual
http://jp.php.net/manual/ja/language.variables.variable.php
変数名を動的に指定する場合は、

$a = ‘hello’;
$$a = ‘world’; (または $hello = ‘world’;)

としたとき、以下のような出力。

echo “$a”; → hello
echo “${$a}”; → world
echo “$hello”; → world

変数名の一部だけを可変にする場合は、

$b = ‘llo’;
echo “$he{$b}”; → エラーとなる!
echo “${‘he’ . $b}”; → world

■可変関数
可変関数 – phpspot
関数名を動的に指定する場合は、

$a(); → hello()が呼び出される

関数名の一部だけを可変にする場合は、

“he” . $b(); → エラーとなる!
$c = “he” . $b;
$c(); → hello()が呼び出される

変数名と違い、事前に結合しておかないと使えないようだ。

おまけ ■定数かどうか判定する
constant関数使います。

PHP: constant – Manual
http://jp.php.net/manual/ja/function.constant.php

定数で無いとき、NULLを返す関数です。
↓のような感じで使えそうかなー。

//「_CONST0」~「_CONST9」まで、もし定数で存在したら出力
for($i = 0; $i < 9; $i++) {
  if(constant(constant(“_CONST” . $i)) {
    echo(constant(“_CONST” . $i));
  }
}

1件のコメント

  1. ピンバック: kattsuk2 web memo

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です