$hoge[1]、$hoge[2]、$hoge[3].....
となっているときはforループで簡単に同じ処理を行えますが
$hoge1、$hoge2、$hoge3.....
となっている場合に同じようにする方法はあるのでしょうか?
それとも$hoge50 まであったら50行同じ事を書く必要があるのでしょうか。
できれば配列にしたくなく、この変数のまま処理できればと考えています。
よろしくお願いします。
日本語で説明してもわかりにくいと思うのでサンプルを
$hoge0 = 0;
$hoge1 = 0;
$hoge2 = 0;
for($i=1;$i<3;$i++)
{
$dst="hoge" . $i;
${$dst} = $i; // こんな感じで目的が達成できます
}
echo $hoge0 . "\n";
echo $hoge1 . "\n";
echo $hoge2 . "\n";
日本語で説明してもわかりにくいと思うのでサンプルを
$hoge0 = 0;
$hoge1 = 0;
$hoge2 = 0;
for($i=1;$i<3;$i++)
{
$dst="hoge" . $i;
${$dst} = $i; // こんな感じで目的が達成できます
}
echo $hoge0 . "\n";
echo $hoge1 . "\n";
echo $hoge2 . "\n";
なるほどっ
こんな事ができたんですね。
ありがとうございました。
可変変数を使えばできます。
下記スクリプトを参考にしてください。
<?php //代入 for ($i = 1; $i < 20; $i++) { $a = 'hoge' . $i; //変数名 $$a = 100 + $i; } //表示 for ($i = 1; $i < 20; $i++) { $a = 'hoge' . $i; //変数名 echo "$a = ${$a}\n"; } ?>
ありがとうございます。
可変変数と言う言葉を知りませんでした。
このような動作で要件を満たしているでしょうか?
要件を満たしていなかったらポイントは0で構いません。
$hoge1 = 111;
$hoge2 = 222;
$hoge3 = 333;
$hoge4 = 444;
$hoge5 = 555;
for ($i = 1; $i <= 5; $i++) {
print $i . '->' . ${"hoge" . $i} . "\n";
}
ありがとうございます。
こんな感じでしょうか?
<?php $hoge1 = 'fuga1'; $hoge2 = 'fuga2'; $hoge3 = 'fuga3'; for($i = 1; $i <= 3; $i++) { //定義済み変数は get_defined_vars() で取得できる $arr = get_defined_vars(); echo $arr["hoge$i"]; //グローバル変数なら $GLOBALS も使える echo $GLOBALS["hoge$i"]; //こんな書式でもいけます $name = "hoge$i"; echo $$name; } ?> |php|<
ありがとうございます。
なるほどっ
こんな事ができたんですね。
ありがとうございました。