どのようにして、外側のスコープに読めるuse()
を経由して、コールバックでdyanmic(すなわち${...}
)変数を作成しますか?PHP - 使用中のダイナミックVAR()
これは解析エラーをスローすることに驚きました。
$foo = [1,2,3];
array_walk($foo, function($val, $key) use (&${'val_'.$key}) { //<-- parse error in use()
${'val_'.$key} = $val;
});
$val_2; //I expected 3;
しかし、以下ではない - との唯一の違いは、私はuse()
に、という名前の変数($bar
)ではなく、動的なものを使用しています。
$foo = [1,2,3];
$bar = [];
array_walk($foo, function($val, $key) use (&$bar) { //<-- fine - using 'normal' variable
$bar[$key] = $val;
});
$bar[2]; //3
これは仮説的な質問です。なぜ私は動的アプローチのエラーが不思議です。
(https://bugs.php.net/bug.php?id=62918)[ありバグレポートはこちらです]が、それは情報興味深い – iainn
の全体の多くを持っていません。バグページのコメント: "これは明らかな構文エラーです。PHPはスクリプトコンテキストで$ {'x'}をサポートしていません。$ {var}表記は、テキストと変数を区別するテキストコンテキストでのみ使用されます。 *明らかに*、ええ?それほど明白ではない、私は言うだろう。 – Utkanos
ええ、それは私にも意味がありませんでした。それは完全に有効であるように思えます。どのような手段でも共通のユースケースではないので、私はそれが再び起こっていないことにショックを受けていません。 – iainn