1

有两个数组需要在函数中进行更改。如何传递该数组?我知道的方法是将 2 个数组声明为函数中的全局变量:

function myfunc(){
 global $arr1;
 global $arr2;
 //do something
}

这是否有意义,是否可以将两个数组作为引用传递?如何(如果是)?

4

3 回答 3

2

是的,您可以将数组作为参考传递,这比使用全局变量更可取。

function myfunc( array &$arr1, array &$arr2 ) {
    // do something
}

myfunc( $someArray, $someOtherArray );

函数定义中的&告诉 PHP 传递一个引用而不是一个值。

于 2012-04-18T17:00:30.893 回答
2

这是通过引用传递它们的方法,定义函数如下:

function myfunc(&$arr1, &$arr2) {
    // ... modify arrays here
}

只需在要通过引用传递的函数参数前面加上&. 现在,当它们被函数接收时,它们就是引用。

当您调用函数时,您不必(也不应该)将 放在&变量前面,因为这会导致调用时按引用传递通知。像往常一样将它们传递给您的函数$res = myfunc($first, $second);

请参阅通过引用传递

于 2012-04-18T17:02:04.373 回答
1

我会采取另一种方法(如果数组不是太大......)以明确调用函数的位置,原始数组将被更改(尽管我可能永远不会在一个函数中更改两个全局数组......) :

函数调用:

list($array1, $array2) = myfunc($array1, $array2);

功能:

function myfunc($array_x, $array_y){
  //do something
  return array($array_x, $array_y);
}
于 2012-04-18T17:36:53.427 回答