.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 6
.
<< Prev
リファレンスの生成
« INDEX »
PHP 文法編
Next >>
定義済み変数
作成日:2006/05/10

1E.5 可変変数

構文:可変変数
$$変数名  OR ${$変数名}
  • {$変数名}の値が変数名になります
  • {$変数名}で${$変数名}を間接参照しています

 PHPには可変変数と呼ばれるものがあります。 可変変数とはシンボリックリンクの事です。 Perlのシンボリックリンクと殆ど同じ概念です。 また、シンボリックリンクは間接参照構文なのでC言語のポインタに近い概念です。 C言語のポインタはプロセス空間の仮想メモリアドレスですが、 PHPの可変変数やPerlのシンボリックリンクは変数の値で変数名を間接的に参照します。 これは、シンポルテーブル(変数名とその値を管理しているテーブル)をメモリ上で動的に保持している インタプリタ特有の間接参照の方法です。

用例:
$bar = "bot";
$foo = "bar";

echo $$foo;     // botを出力します
echo ${$foo};   // 上と同じ事です
$$foo = "bot2"; // $barに"bot2"を代入します

 配列で可変変数を使用する際には、曖昧さの問題を解決する必要があります。 $$a[0]と書いた場合、 可変変数名は $a[0] なのか $aなのかです。

  • ${$変数名[キー]} --- $変数名[キー]を可変変数名(スカラー)として扱う場合
  • ${$変数名}[キー] --- $変数名を可変変数名(配列)として扱う場合

用例:
$a   = array('red','green','blue');
$red = 'apple';
echo $$a[0];   // 'apple'を出力(曖昧)
echo ${$a[0]}; // 'apple'を出力(推奨)

$a   = 'red';
$red = array('apple','tomato','carrot');
echo ${$a}[0]; // 'apple'を出力
echo {$$a}[0]; // こんな表記はエラー(変数を表記する構文でない)
<< Prev
リファレンスの生成
« INDEX »>
Page Top
Next >>
定義済み変数

.