動的変数名を使用しようとしています(実際に何が呼び出されているのかわかりません)。
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
戻りは、null
それが機能していないことを私に告げるものです。私が探している構文や手法がここにあるかわかりません。そのため、調査するのが難しくなっています。$filelist
以前に定義されています。
動的変数名を使用しようとしています(実際に何が呼び出されているのかわかりません)。
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
戻りは、null
それが機能していないことを私に告げるものです。私が探している構文や手法がここにあるかわかりません。そのため、調査するのが難しくなっています。$filelist
以前に定義されています。
回答:
それらを包む{}
:
${"file" . $i} = file($filelist[$i]);
を使用する${}
と、動的変数を簡単に作成できます。
${'a' . 'b'} = 'hello there';
echo $ab; // hello there
${'fixedTime$i'} = $row['timeInstance'];
あなたは非常に有用ではない与え$fixedTime$i
代わりに$fixedTime1, $fixedTime2
など(幸いなことに、ほとんどすぐにそれを見つけた。)
PHPでは$
、変数の前にエクストラを置くだけで、それを動的変数にすることができます。
$$variableName = $value;
私はお勧めしませんが、この動作を連鎖させることもできます。
$$$$$$$$DoNotTryThisAtHomeKids = $value;
あなたは$variableName
間に置くことを強制されますが、強制されません{}
:
${$variableName} = $value;
{}
変数の名前自体が次のように複数の値の組み合わせである場合にのみ使用する必要があります。
${$variableNamePart1 . $variableNamePart2} = $value;
それでも{}
読みやすいので、常にを使用することをお勧めします。
常に使用するもう1つの理由{}
は、PHP5とPHP7では動的変数の処理方法が少し異なるため、場合によっては結果が異なることです。
PHP7では、動的変数、プロパティ、およびメソッドが厳密に左から右の順序で評価されるようになりました。これは、PHP5での特殊なケースの混在とは対照的です。以下の例は、評価の順序がどのように変更されたかを示しています。
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
の{}
代わりに使用してみてください()
:
${"file".$i} = file($filelist[$i]);
$price_for_monday = 10; $price_for_tuesday = 20; $today = 'tuesday'; $price_for_today = ${ 'price_for_' . $today}; echo $price_for_today; // will return 20
これは、クエリから返された結果に対して頻繁に行われます。
例えば
// $MyQueryResult is an array of results from a query
foreach ($MyQueryResult as $key=>$value)
{
${$key}=$value;
}
$ MyQueryResult ['MyFieldname']ではなく、$ MyFieldname(echoステートメントなどで簡単です)を使用できるようになりました
うん、それはおそらく怠惰ですが、私は何の問題も経験したことがありません。
私は6つの同一の配列があり、別の変数に応じて適切な配列を選択して、それに値を割り当てる必要があったという立場にありました。ここに示すケースでは、$ comp_catは「a」だったので、「a」配列を選択する必要がありました(もちろん、「b」から「f」配列もありました)。
配列内の変数の位置の値は、右中括弧の後にあることに注意してください。
$ {'comp_cat _'。$ comp_cat .'_ arr '} [1] [0] = "FRED BLOGGS";
$ {'comp_cat _'。$ comp_cat .'_ arr '} [1] [1] = $ file_tidy;
echo '最初の配列値は'。$ comp_cat_a_arr [1] [0]です。 ' 2番目の値は。$ comp_cat_a_arr [1] [1]です。