Tips!PHP 変数名に変数を使う - 可変変数
PHPでは変数に変数を用いることができます。
例えば条件に応じて$pattern_{変数}のように変数名を動的に扱いたいとき、
<?php $pattern_red = 'rose'; $pattern_blue = 'sky'; $condition = 'other'; if($condition === 'apple'){ $val = 'red'; }else{ $val = 'blue'; } echo ${"pattern_" . $val}; // skyが出力される ?>
とすると、$conditionの値によってechoする変数を変えることができます。
このように変数を可変にすることを可変変数といいます。
可変変数
ドル記号を二つ使用することにより、変数の名前にすることができます。
<?php $identifier = 'hebisan'; $$identifier = 'blackmanba'; echo $$identifier; // blackmanbaが出力される echo $hebisan; // blackmanbaが出力される
上記の例では、$$identifierは$identifierがhebisanと解釈され、$hebisanという変数に'blackmanba'が代入されることになります。
$$identifierも$hebisanも両方とも、’blackmanba'を出力します。
しかし可変変数をダブルクォーテーションで括った場合には、
<?php echo "$$identifier"; // $hebisanが出力される ?>
$identifierの部分のみ変数と扱われ、'$hebisan'が出力されます。
<?php echo "${$identifier}"; // blackmanbaが出力される ?>
$identifierを波括弧で括ることにより、$$identifierが可変変数であることをパーサに明示的に示すと'blackmanba'が出力されます。
サンプル
可変変数を使用し、$week配列から$week1~$week7の変数を作成する。
<?php $week = array('Mon', 'Tues', 'Wednes', 'Thurs', 'Fri', 'Satur', 'Sun'); for($i=1; $i<=7; $i++){ ${"week" . $i} = $week[$i-1]; } echo $week5; // Friが出力される ?>
参考:PHPマニュアル
(byへびさん)