2012-04-18 125 views
5

我有一个函数可以填充在函数启动之前创建的数组。为了让人口发挥作用,我在自己的职能中使用了“全球”。一切工作正常与这里下面的情况:PHP - 如何将全局变量传递给函数

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

my_function($parameter); 

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

我想什么是传递一个应该调用函数时,在函数中使用数组。这个想法是做这样的事情:

$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'; 
} 

另外根据我读,利用全球的也许不是最好的事情......我看到使用&标志的地方,并说这部分人更好。但我不明白,也没有找到有关'方法'的信息......希望我清楚。预先感谢您的回复。干杯。马克

回答

9

这就是所谓的referencing

$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'); 

现在省略阵列将被改变。

+0

Helo Dan。感谢您的帮助。在这种情况下,这个&符号如何被调用?它是如何工作的?当调用函数的时候,我还必须把&符号放在哪里? – Marc 2012-04-18 10:42:00

+0

@Marc:为什么不阅读手册,他留下了一个链接,直接在那里 – 2012-04-18 10:42:52

+0

你好Shakti。这个链接是在我发布这个问题之后添加的... – Marc 2012-04-18 10:44:56

1

使用&意味着pass by reference

例如:

$x = '123'; 

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

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

在你的情况,你可以使用:

$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

你可以写你的函数像这样:

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

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