関数に include を入れると、include した変数は呼び出せなくなるのでしょうか?
1.php
<br />
echo $a;<br />
ログイン後にコピー
2.php
<br />
$a = "aaaaaaaaaaaa";<br />
include("1.php");<br />
ログイン後にコピー
2.phpをこのように書いて実行すると正しく出力が得られますが、このようにはできません
2.php
<br />
function loadFile($filename){<br />
include $filename;<br />
}<br />
$a = "aaaaaaaaaaaa";<br />
loadFile("1.php");<br />
ログイン後にコピー
これはなぜでしょうか?インクルードを関数に入れると、インクルードされたファイルはその変数を参照できません
-----解決策-------- - <br />
function loadFile(){<br />
echo $a;<br />
}<br />
$a = "aaaaaaaaaaaa";<br />
loadFile();<br />
ログイン後にコピー
試してみればわかります
-----解決策------------変数スコープの問題 。
関数内に 1.php を含めた場合、関数の外で宣言された変数は関数に影響を与えません。関数内でグローバル化しない限り。または、1.php の $a の代わりに $GLOBALS['a'] を使用します。
さらに、私にはたくさんのファイルを書いて、それをどこにでも含めるのが好きな同僚がいます。
私は、グローバル変数の汚染を引き起こすこのアプローチには非常に抵抗があります。競合が発生するのを恐れて、変数がどこで宣言されているか、または変数を宣言するときに見つけるのに苦労することがよくあります。そしてコードが汚い。
したがって、このアプローチは使用しないことをお勧めします。変数をローカルで制御するようにしてください。これは、PHP のパフォーマンスに良いだけでなく、コードのロジックも明確になります。
------解決策------まあ、これはスコープの問題です。