我有一个函数填充在启动函数之前创建的数组。为了使人口有效,我在我的功能中使用了“全局”。以下情况一切正常:
$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';
}
另外根据我的阅读,使用全球可能不是最好的事情...我看到有些人使用&在某处签字并说它更好。但我没有得到它,也没有找到关于那种'方法'的信息......希望我很清楚。提前感谢您的回复。干杯。马克
答案 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);