私はウェブサイトに次のコードを持っています。
$magic_number_output = 'The magic number is: $magic_number';
function show_magic_number($magic_number) {
global $magic_number_output;
eval("\$magic_number_output = \"$magic_number_output\";");
echo '
' . $magic_number_output;
}
変数$magic_number_output
は別のPHPファイルに設定されており、言語ごとにこの変数のバージョンが異なるため、関数内でグローバルを使用して参照されます。$magic_number
は関数に渡され、これは変数で。を使用して置き換えられますeval()
。ただし、関数が複数回呼び出された場合、は関数に$magic_number
送信された最初の値から変更されません。たとえば、次のように呼び出された場合:
show_magic_number(5);
show_magic_number(2000);
...出力は次のようになります。
魔法の数は:5 魔法の数は:5
...これにしたいとき:
魔法の数は:5 魔法の数は:2000
明らかに、私はどのようglobal
にeval()
機能するかを誤解し、答えを探して実験しようとしましたが、解決策を見つけるにはあまりにも多くの初心者です。毎回グローバル変数をリセットして、最初に関数に送信された$magic_number
(つまり)を参照し続けないようにする方法があるのではないかと思いました。5
誰かがこれを回避する方法を提案できますか?