パウロは何が起こっているのかを説明していますが、もう一度説明しようと思います。
変数を作成すると、それは特定のスコープに属します。スコープは、変数を使用できる領域です。
たとえば、私がこれを行うとしたら
$some_var = 1;
function some_fun()
{
echo $some_var;
}
変数は関数内で作成されていないため、関数内では許可されていません。関数内で機能するには、以下の例が機能するように、globalキーワードを使用する必要があります
$some_var = 1;
function some_fun()
{
global $some_var; //Call the variable into the function scope!
echo $some_var;
}
これはその逆なので、次のことはできません
function init()
{
$some_var = true;
}
init();
if($some_var) // this is not defined.
{
}
これを回避する方法はいくつかありますが、最も簡単な方法は、$GLOBALS
特殊な変数であるため、スクリプト内のどこでも許可される配列を使用することです。
それで
$GLOBALS['config'] = array(
'Some Car' => 22
);
function do_something()
{
echo $GLOBALS['config']['some Car']; //works
}
また、セキュリティのために、サーバーのINIでグローバル登録がオフになっていることを確認してください。
http://www.php.net/manual/en/security.globals.php