変数名の一部を変数にするPHP

更新日:2022年1月21日

今回は変数名の一部を変数にする可変変数のご紹介です。
使い方は様々ありますが、主にfor文と組み合わせて使うのが一般的でしょう。

例として、例えば下記のようなPHPがあったとします。
問題を出題し、その答えが合っているかどうかを判断するPHPです。

<?php
$question1 = "りんご";
$answer1 = "りんご";
$question2 = "みかん";
$answer2 = "みかん";
$question3 = "なし";
$answer3 = "なし";

if($question1 == $answer1){
	$result1 = "正解です";
}else{
	$result1 = "間違っています";
}

if($question2 == $answer2){
	$result2 = "正解です";
}else{
	$result2 = "間違っています";
}

if($question3 == $answer3){
	$result3 = "正解です";
}else{
	$result3 = "間違っています";
}
?>

長ったらしくなってしまうので、もう少しスマートに書けないかなぁと思う訳ですが、そこで使えるのが可変変数になります。
要は$question1、$answer1、$result1の1の数字の箇所を変数にしちゃうってことです。

上記のPHPを可変変数を使って記述すると下記のようになります。

<?php
$question1 = "りんご";
$answer1 = "りんご";
$question2 = "みかん";
$answer2 = "みかん";
$question3 = "なし";
$answer3 = "なし";

for($i=0; $i<3; $i++) {
	if(${"question".$i} == ${"answer".$i}){
		${"result".$i} = "正解です";
	}else{
		${"result".$i} = "間違っています";
	}
}
?>

$question1

${"question".$i}
と置き換えることで可変変数が使えます。for文の中で使って下さいね。

本来であれば配列を使うのがベストなのですが、既存のソースコードの改定となると使わざるを得ない状況があります。
お試し下さい。