次のようなファイルa.phpがあります。
function func_1() {
inlude_once(b.php);
$somevar = 'def';
func_2($somevar);
}
そして、b.phpのようなそのルックスを
$some_global_var = 'abc';
function func_2($var) {
global $some_global_var;
echo $some_global_var.$var;
}
そして、何らかの理由で結果としてdefしか得られないのに、なぜ func_2 に $some_global_var が表示されないのですか?
のスコープを忘れたからですfunc_1
。したがって、定義を含めると、コードが PHP にどのように表示されますか
function func_1() {
$some_global_var = 'abc'; // <- this is inside the scope of the parent function!
function func_2($var) {
global $some_global_var;
echo $some_global_var.$var;
}
$somevar = 'def';
func_2($somevar);
}
あなたはそれを内部で やっていますfunc_1
。したがって、変数がグローバル スコープで実際に使用できることはありませんでした。$some_global_var = 'abc';
外部で定義した場合、それはグローバル スコープ内にあります。
代わりに、これを引数として挿入する必要があります。グローバルは悪い習慣です
function func_1() {
$some_global_var = 'abc';
function func_2($var, $var2) {
echo $var2 . $var;
}
$somevar = 'def';
func_2($somevar, $some_global_var);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加