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


php: the best practice to pass two global arrays to the function to modify them

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

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

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

以下是通过

引用传递它们的方法,请按如下方式定义函数:

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

只需在要通过引用传递的函数参数前面加上一个&即可。 现在,当函数接收到它们时,它们是引用。

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

请参阅按引用传递

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

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

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

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

函数调用:

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

功能:

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