$ fileという変数とforループがあるとしましょう:for($i=1; $i <= 5; $i++) {}
Forループの反復ごとに、_$i
_値が_$file
_変数名に追加されるため、forループが終了した後、5つの変数が必要になります:_$file1
_、_$file2
_、_$file3
_、_$file4
_、および_$file5
_。
$ {'varname'}構文 を使用:
for($i=1; $i <= 5; $i++) {
${'file' . $i} = $i;
}
ただし、多くの場合、これの代わりに配列を使用することをお勧めします。
isこれを行う方法があります:
for($i = 1; $i <= 5; $i++) {
${'file'.$i} = ...;
}
しかし、これを行うのは悪い考えです。なぜそれが悪い考えなのですか?これはarraysが意図されているものだからです。代わりにこれを行ってください:
for($i = 1; $i <= 5; $i++) {
$file[$i] = ...;
}
(注:配列キーを1ではなく0から開始するのが通常の慣例ですが、そうする必要はありません。)
あなたが望むことをすることは可能ですが、その場で変数を作成することはこのような問題を解決するための珍しい方法のようです(私は間違っているかもしれません)
ファイル名を配列に格納することをお勧めします。これにより、後でファイルを簡単に繰り返し処理したり、追加のファイルを追加したりして、ハードコードされた変数名を変更する必要がなくなります。
$myfiles = array();
for ($i=1; $i<=5; $i++) {
$myfiles["file$i"] = "value set in loop";
}
//if you want to use the values later
$file5_value = $myfiles["file5"];
//if you want to loop through them all
foreach ($myfiles as $key => $val) {
echo "$key -> $val\n";
}
配列も使用できます。まったく同じ影響はありませんが、一般に、これらの状況で使用されているように見えます。
for($i=1; $i <= 5; $i++) {
$file[$i] = $i;
}