5

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

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

除了根据我读到的内容外,使用 global 可能不是最好的方法......我看到有些人在某处使用 & 符号并说它更好。但我不明白,也没有找到有关该“方法”的信息......希望我很清楚。预先感谢您的回复。干杯。马克

4

4 回答 4

10

它被称为引用

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

现在将更改省略的数组。

于 2012-04-18T10:41:05.350 回答
2

也许您需要“参考参数”之类的东西http://www.php.net/manual/en/functions.arguments.php

于 2012-04-18T10:44:20.307 回答
1

使用&方式通过引用传递

例如:

$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';   
}   
于 2012-04-18T10:43:53.897 回答
1

你可以这样写你的函数:

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

$listOne = my_function($listOne);
print_r($listOne);
于 2012-04-18T10:57:12.407 回答