PHP で動的変数名で中括弧を使用する
P粉717595985
2023-08-29 12:05:01
<p>動的変数名 (実際に何と呼ばれるかはわかりません) を使用しようとしていますが、次のような感じです。 </p>
<pre class="brush:php;toolbar:false;">for($i=0; $i<=2; $i ) {
$("ファイル" . $i) = ファイル($filelist[$i]);
}
var_dump($file0);</pre>
<p>は <code>null</code> を返します。これは機能しないことを示しています。どのような構文やテクノロジを探しているのかがわからないため、調査が困難になります。 <code>$filelist</code> は以前に定義されていました。 </p>
###概要###
PHP では、変数の前に
$を追加するだけで、変数を動的にできます。 リーリー
これはお勧めしませんが、この動作を連鎖させることもできます:
リーリー$variableName
を{}
の使用は、以下に示すように、変数名自体が複数の値の組み合わせである場合にのみ適用されます。 リーリー:
の間に配置できますが、必須ではありません。 リーリー{}
ただし、読みやすいため、常に
{}
を使用することをお勧めします。PHP5 と PHP7 の違い
常に
{}を使用するもう 1 つの理由は、PHP5 と PHP7 では動的変数の処理方法が若干異なり、場合によっては異なる結果が生じる可能性があるためです。
PHP7 では、動的変数、プロパティ、およびメソッドは、PHP5 の混合特殊ケースではなく、厳密に左から右に評価されるようになりました。次の例は、評価順序がどのように変化するかを示しています。
ケース 1:
$$foo['bar']['baz']PHP5 の説明:
${$foo['bar']['baz']}${$foo}['bar']['baz']
ケース 2:
$foo->$bar['baz']PHP5 の説明:
$foo->{$bar['baz']}$foo->{$bar}['baz']
ケース 3:
$foo->$bar['baz']()PHP5 の説明:
$foo->{$bar['baz']}()$foo->{$bar}['baz']()
ケース 4:
Foo::$bar['baz']()PHP5 の説明:
Foo::{$bar['baz']}()Foo::{$bar}['baz']()
これらを
リーリー{}
で囲みます:実際の例
リーリー${}
の使用は動的変数を作成する方法です。簡単な例: