10
votes

J'ai besoin d'un besoin ("config.php") avec des tableaux, mais obtenez toujours une erreur de variable non définie

i fava une fonction qui ressemble à ceci comme ceci: xxx

et une config.php qui ressemble à ceci: xxx

Pourquoi est-ce que je reçois AVIS: Variable non définie: Car_park ?


0 commentaires

4 Réponses :


19
votes

Essayez d'ajouter

 global $car_park;


2 commentaires

super. Qui corrige le problème: D


Vous pouvez alternativement exiger () le fichier de l'intérieur de la fonction elle-même. Cela aurait également dit dans la bonne portée. Je ne peux pas dire que je recommanderais de le faire, mais le point est le suivant: lorsque vous incluez un fichier, il est exécuté dans la portée de l'instruction Inclure.



10
votes

même si Paul décrit ce qui se passe, je vais essayer d'expliquer à nouveau.

Lorsque vous créez une variable, elle appartient à une portée particulière. Une portée est une zone où une variable peut être utilisée. P>

Par exemple, si je devais faire ce p> xxx pré>

la variable n'est pas autorisée dans la fonction parce qu'il n'a pas été créé à l'intérieur de la fonction. Pour qu'il fonctionne à l'intérieur d'une fonction, vous devez utiliser le mot clé global de sorte que l'exemple ci-dessous fonctionne p> xxx pré>

ceci est inversement pour ne pas pouvoir faire ce qui suit p>

$GLOBALS['config'] = array(
   'Some Car' => 22
);

function do_something()
{
   echo $GLOBALS['config']['some Car']; //works
}


0 commentaires

1
votes

Vous pouvez essayer de le proxy dans votre fonction, comme:

Fonction FOO ($ bar) {

(code)

$ voiture = $ bar [3];

(code)

}

Puis quand vous l'appelez:

echo foo ($ bar);


0 commentaires

0
votes

J'ai eu le même problème et j'ai déchiré mes cheveux dessus - rien n'a fonctionné, absolument rien - jusqu'à désespoir, je viens de copier le contenu de config.php dans un nouveau fichier et enregistré Comme config2.php (sans modifier quoi que ce soit dans son contenu du tout), modifié le requis_once ('config.php'); à require_once ('config2.php '); et il a juste commencé à travailler.


0 commentaires