動的変数名を使用しようとしています (実際に何と呼ばれているかはわかりません)。しかし、ほぼ次のようになります。
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
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]);
クエリから返された結果に対してこれを頻繁に行います..
例えば
// $MyQueryResult is an array of results from a query
foreach ($MyQueryResult as $key=>$value)
{
${$key}=$value;
}
$MyQueryResult['MyFieldname'] ではなく、$MyFieldname (echo ステートメントなどで簡単に使用できます) を使用できるようになりました。
ええ、おそらく怠け者ですが、問題が発生したことはありません。
トム 既存の配列がある場合は、その配列をオブジェクトに変換して、次のように使用できます。
$r = (object) $MyQueryResult;
echo $r->key;
動的に作成された変数値と、変数内のすべての値を組み合わせたソリューションがあります。
if($_SERVER['REQUEST_METHOD']=='POST'){
$r=0;
for($i=1; $i<=4; $i++){
$a = $_POST['a'.$i];
$r .= $a;
}
echo $r;
}
私は6つの同一の配列を持っている立場にあり、別の変数に応じて正しい配列を選択し、それに値を割り当てる必要がありました。ここに示されている場合、$comp_cat は 'a' だったので、'a' 配列を選択する必要がありました (もちろん、'b' から 'f' 配列もありました)。
配列内の変数の位置の値は右中括弧の後にあることに注意してください。
${'comp_cat_'.$comp_cat.'_arr'}[1][0] = "フレッドのブログ";
${'comp_cat_'.$comp_cat.'_arr'}[1][1] = $file_tidy;
echo '最初の配列値は '.$comp_cat_a_arr[1][0]' です。2 番目の値は .$comp_cat_a_arr[1][1]; です。