Chociaż Paul opisuje, co się dzieje, spróbuję wyjaśnić to jeszcze raz.
Po utworzeniu zmiennej należy do określonego zakresu. Zakres to obszar, w którym można użyć zmiennej.
Na przykład, gdybym miał to zrobić
$some_var = 1;
function some_fun()
{
echo $some_var;
}
zmienna nie jest dopuszczalne w ramach funkcji, ponieważ nie została stworzona wewnątrz funkcji. Na to, aby pracować wewnątrz funkcji należy użyć słowa kluczowego global więc poniższy przykład będzie działać
$some_var = 1;
function some_fun()
{
global $some_var; //Call the variable into the function scope!
echo $some_var;
}
Jest odwrotnie, więc nie można wykonać następujące czynności
function init()
{
$some_var = true;
}
init();
if($some_var) // this is not defined.
{
}
Istnieje kilka sposobów dookoła tego, ale najprostszym ze wszystkich jest użycie tablicy $GLOBALS
, która jest dozwolona w dowolnym miejscu skryptu, ponieważ są to zmienne specjalne.
Więc
$GLOBALS['config'] = array(
'Some Car' => 22
);
function do_something()
{
echo $GLOBALS['config']['some Car']; //works
}
Upewnij się także, czy serwer ma register_globals wyłączony w Twojej INI dla bezpieczeństwa. http://www.php.net/manual/en/security.globals.php
świetny.To naprawiło problem: D – ganjan
Alternatywnie możesz 'require()' plik od wewnątrz samej funkcji. To również umieściłoby go we właściwym zakresie. Nie mogę powiedzieć, że bym to polecił, ale chodzi o to, że gdy dołączasz plik, jest on uruchamiany w zakresie, w którym znajduje się instrukcja include. –