PHP - 如何将全局变量传递给函数

时间:2012-04-18 10:39:19

标签: php function global

我有一个函数填充在启动函数之前创建的数组。为了使人口有效,我在我的功能中使用了“全局”。以下情况一切正常:

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

另外根据我的阅读,使用全球可能不是最好的事情...我看到有些人使用&在某处签字并说它更好。但我没有得到它,也没有找到关于那种'方法'的信息......希望我很清楚。提前感谢您的回复。干杯。马克

4 个答案:

答案 0 :(得分:10)

它被称为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');

现在省略的数组将被更改。

答案 1 :(得分:2)

也许你需要一些像“参考参考”http://www.php.net/manual/en/functions.arguments.php

这样的东西

答案 2 :(得分: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';   
}   

答案 3 :(得分:1)

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

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

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