2010-06-28 3 views
7

ich eine Funktion hava erhalten, die etwa wie folgt aussieht:Ich habe eine mit Arrays („config.php“) benötigen, aber immer noch undefinierte Variable Fehler

require("config.php"); 

function displayGta() 
{ 
    (... lots of code...) 

    $car = $car_park[3]; 
} 

und eine config.php, die wie folgt aussehen :

<?php 
$car_park = array ("Mercedes 540 K.", "Chevrolet Coupe.", "Chrysler Imperial.", "Ford Model T.", "Hudson Super.", "Packard Sedan.", "Pontiac Landau.", "Duryea."); 
(...) 
?> 

Warum erhalte ich Hinweis: Undefined variable: car_park?

Antwort

14

Versuchen Zugabe

global $car_park; 

in Ihrer Funktion. Wenn Sie die Definition von $ car_park einbeziehen, erstellt sie eine globale Variable, und um innerhalb einer Funktion auf diese zuzugreifen, müssen Sie sie als global deklarieren oder über die Superglobale $ GLOBALS darauf zugreifen.

Weitere Informationen finden Sie unter manual page on variable scope.

+0

groß.Das hat das Problem behoben: D – ganjan

+0

Alternativ könnte man die Datei innerhalb der Funktion selbst() anfordern. Das würde es auch in den richtigen Bereich bringen. Ich kann nicht sagen, dass ich das tatsächlich empfehlen würde, aber der Punkt ist: Wenn Sie eine Datei einschließen, wird sie in dem Bereich ausgeführt, in dem sich die Include-Anweisung befindet. –

10

Obwohl Paul beschreibt, was vor sich geht, werde ich versuchen, es noch einmal zu erklären.

Wenn Sie eine Variable erstellen, gehört sie zu einem bestimmten Bereich. Ein Bereich ist ein Bereich, in dem eine Variable verwendet werden kann.

Zum Beispiel, wenn ich dieses

$some_var = 1; 

function some_fun() 
{ 
    echo $some_var; 
} 

die Variable innerhalb der Funktion darf nicht tun, weil sie nicht innerhalb der Funktion erstellt wurde. Denn es ist in einer Funktion zu arbeiten, müssen Sie das Schlüsselwort global verwenden, so würde das folgende Beispiel

$some_var = 1; 

function some_fun() 
{ 
    global $some_var; //Call the variable into the function scope! 
    echo $some_var; 
} 

arbeiten Diese umgekehrt ist, so können Sie nicht tun, die folgende

function init() 
{ 
    $some_var = true; 
} 

init(); 

if($some_var) // this is not defined. 
{ 

} 

Es gibt ein paar Möglichkeiten, um diese, aber die einfachste von allen ist mit $GLOBALS Array, die überall im Skript erlaubt ist, da sie spezielle Variablen sind.

So

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

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

Auch stellen Sie sicher, dass Server in Ihrer INI für Sicherheit ausgeschaltet Register Globals hat. http://www.php.net/manual/en/security.globals.php

1

Sie könnten zu Proxy versuchen, es in Ihrer Funktion, wie:

Funktion foo ($ bar) {

(Code)

$ Auto = $ bar [3];

(Code)

}

Dann, wenn Sie es nennen:

echo foo ($ bar);

Verwandte Themen