
【PHP】変数名に変数を使って動的に指定する「可変変数」の使い方
2018/01/23
PHPで、変数名に連番などの変数が使える「可変変数」の使い方を備忘録としてポストします。
PHPで「可変変数」を使ってみる
例えば、以下の様な変数があったとします。
[php]
$example1 = "例1です";
$example2 = "例2です";
$example3 = "例3です";
$example4 = "例4です";
$example5 = "例5です";
$example6 = "例6です";
[/php]
この変数を if文で判定しながら echo させようとすると、以下のようになってしまいます。
[php]
if (isset($example1) && !empty($example1)) {
echo $example1;
}
if (isset($example2) && !empty($example2)) {
echo $example2;
}
if (isset($example3) && !empty($example3)) {
echo $example3;
}
以下略
[/php]
極端な例ですが、さすがに面倒ですし、同じようなコードを繰り返して書くのもなんだか格好悪い。
元のデータが配列ならスマートなんですが、配列ではないので foreachも使えない。
ということで「可変変数」の出番です。
例に挙げた変数 $example1 の数字部分を変数化してしまおう、というもので、うまくいけば for文などで扱えるようになります。
文字列で使う
書き方の例
書き方は以下の感じで。
${"変数名".$連番変数}
実例
以下、実例。
[php]
for ($i=1; $<=7; $i++) {
if (isset(${"example".$i}) && !empty(${"example".$i}) ) {
echo ${"example".$i};
}
}
[/php]
この例での7回分の処理を1文で処理出来ます。
配列の中で使う
配列中で使う場合は以下のようにすれば使えます。
波括弧({})を使って書く場合と、使わない場合の書き方です。
ダブルクォーテーションの使い方に注意です。
{}括弧を使う場合
[php]
for ($q=1; $q<=7; $q++) {
$val['Item']["item_number{$q}"]
}
[/php]
{}括弧を使わない場合
[php]
for ($q=1; $q<=7; $q++) {
$val['Item']["item_number".$q]
}
[/php]
覚えておくと何かと助かる可変変数の紹介でした。