2012-04-18 6 views
5

Ich habe eine Funktion, die ein Array füllt, das vor dem Start der Funktion erstellt wurde. Um die Bevölkerung arbeiten zu lassen, habe ich in meiner Funktion "global" verwendet. Alles arbeitet mit den hier unten Situation fein:PHP - Wie übergebe ich eine globale Variable an eine Funktion

$parameter = 'something'; 
$listOne = array(); 

my_function($parameter); 

function my_function($para) { 
    global $listeOne; 
    ...some code 
    $listeOne[0] = 'john'; 
    $listeOne[1] = 'lugano'; 
} 

Was Ich mag würde, ist das Array zu übergeben, die angeblich in der Funktion verwendet werden, wenn die Funktion aufgerufen wird. Die Idee wäre, so etwas zu tun:

$parameter = 'something'; 
$listOne = array(); 
$listTwo = array(); 

my_function($listOne, $parameter); 
...some code 
my_function($listTwo, $parameter); 

function my_function($list, $para) { 
    ...some code 
    $list[0] = 'john'; 
    $list[1] = 'lugano'; 
} 

Zusätzlich nach dem, was ich gelesen habe, mit globalen ist vielleicht nicht das beste, was zu tun ... Ich sah einige Leute die & Zeichen irgendwo mit und sagen, es ist besser. Aber ich verstehe es nicht und finde keine Informationen über diese "Methode" ... Hoffe ich bin klar. Vielen Dank im Voraus für Ihre Antworten. Prost. Marc

Antwort

9

Es referencing genannt:

$listOne = array(); 

function my_function(&$list, $para) { 
    ...some code 
    $list[0] = 'john'; 
    $list[1] = 'lugano'; 
} 
my_function($listOne, $parameter); 

print_r($listOne); // array (0 => 'john', 1 => 'lugano'); 

nun die versäumte Array wird geändert.

+0

Helo Dan. Danke, dass du versucht hast zu helfen. Wie heißt das & Zeichen in dieser Situation und wie funktioniert es? Und wenn ich die Funktion anrufe, muss ich auch das & -Zeichen setzen? – Marc

+0

@Marc: warum nicht das Handbuch lesen, er links einen Link, um dort zu verweisen –

+0

Hallo Shakti. Der Link wurde hinzugefügt, nachdem ich die Frage gestellt habe ... – Marc

1

Mit & bedeutet, pass by reference.

Zum Beispiel:

$x = '123'; 

function changeX(&$data){ 
    $data = '1'; 
} 

echo $x; //x should print out as 1. 

In Ihrem Fall könnten Sie verwenden:

$parameter = 'something';  
$listOne = array(); 
$listTwo = array(); 

my_function($listOne, $parameter); 
my_function($listTwo, $parameter); 

function my_function(&$list, $para) { 
    $list[0] = 'john'; 
    $list[1] = 'lugano'; 
} 
1

Sie Ihre Funktion schreiben wie folgt:

$listOne = array(); 
my_function($list = array()) 
{ 
array_push($list, 'john'); 
array_push($list, 'lugano'); 
return $list; 
} 

$listOne = my_function($listOne); 
print_r($listOne);