有两个数组需要在函数中进行更改。如何传递该数组?我知道的方法是将 2 个数组声明为函数中的全局变量:
function myfunc(){
global $arr1;
global $arr2;
//do something
}
这是否有意义,是否可以将两个数组作为引用传递?如何(如果是)?
是的,您可以将数组作为参考传递,这比使用全局变量更可取。
function myfunc( array &$arr1, array &$arr2 ) {
// do something
}
myfunc( $someArray, $someOtherArray );
函数定义中的&
告诉 PHP 传递一个引用而不是一个值。
这是通过引用传递它们的方法,定义函数如下:
function myfunc(&$arr1, &$arr2) {
// ... modify arrays here
}
只需在要通过引用传递的函数参数前面加上&
. 现在,当它们被函数接收时,它们就是引用。
当您调用函数时,您不必(也不应该)将 放在&
变量前面,因为这会导致调用时按引用传递通知。像往常一样将它们传递给您的函数$res = myfunc($first, $second);
请参阅通过引用传递
我会采取另一种方法(如果数组不是太大......)以明确调用函数的位置,原始数组将被更改(尽管我可能永远不会在一个函数中更改两个全局数组......) :
函数调用:
list($array1, $array2) = myfunc($array1, $array2);
功能:
function myfunc($array_x, $array_y){
//do something
return array($array_x, $array_y);
}