Несмотря на то, что Пол описывает, что происходит, я попытаюсь объяснить еще раз.
Когда вы создаете переменную, она принадлежит определенной области.Область действия - это область, в которой можно использовать переменную.
Например, если я должен был сделать это
$some_var = 1;
function some_fun()
{
echo $some_var;
}
, то переменная не разрешена внутри функции, поскольку она не была создана внутрифункция.Чтобы он работал внутри функции, вы должны использовать глобальное ключевое слово, чтобы приведенный ниже пример работал
$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
}
Также сделайтеубедитесь, что на вашем сервере отключены глобальные переменные Register в INI для обеспечения безопасности.http://www.php.net/manual/en/security.globals.php