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