php:将两个全局数组传递给函数以修改它们的最佳实践

php:将两个全局数组传递给函数以修改它们的最佳实践,php,function,global,Php,Function,Global,函数中有两个数组需要更改。 如何传递该数组? 我知道的方法是在一个函数中将两个数组声明为全局变量: function myfunc(){ global $arr1; global $arr2; //do something } 这有意义吗?是否可以将两个数组作为引用传递?如何传递(如果是)?是的,可以将数组作为引用传递,这比使用全局数组更可取 function myfunc( array &$arr1, array &$arr2 ) { // do somethi

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

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

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

是的,可以将数组作为引用传递,这比使用全局数组更可取

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

myfunc( $someArray, $someOtherArray );

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

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

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

myfunc( $someArray, $someOtherArray );

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

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

function myfunc(&$arr1, &$arr2) {
    // ... modify arrays here
}
只需在希望通过引用传递的函数参数前面加上
&
。现在,当函数接收到它们时,它们就是引用

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


请参见

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

function myfunc(&$arr1, &$arr2) {
    // ... modify arrays here
}
只需在希望通过引用传递的函数参数前面加上
&
。现在,当函数接收到它们时,它们就是引用

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


请参见

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

函数调用:

list($array1, $array2) = myfunc($array1, $array2);
功能:

function myfunc(){
 global $arr1;
 global $arr2;
 //do something
}
function myfunc($array_x, $array_y){
  //do something
  return array($array_x, $array_y);
}

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

函数调用:

list($array1, $array2) = myfunc($array1, $array2);
功能:

function myfunc(){
 global $arr1;
 global $arr2;
 //do something
}
function myfunc($array_x, $array_y){
  //do something
  return array($array_x, $array_y);
}