関数内で変更する必要がある 2 つの配列があります。その配列を渡す方法は? 私が知っている方法は、関数内で 2 つの配列をグローバル変数として宣言することです。
function myfunc(){
global $arr1;
global $arr2;
//do something
}
それは理にかなっており、代わりに2つの配列を参照として渡すことは可能ですか? どのように(はいの場合)?
はい、配列を参照として渡すことができます。これは、グローバルを使用するよりも望ましい方法です。
function myfunc( array &$arr1, array &$arr2 ) {
// do something
}
myfunc( $someArray, $someOtherArray );
関数定義の&
は、値ではなく参照を渡すように PHP に指示します。
参照によってそれらを渡す方法は次のとおりです。次のように関数を定義します。
function myfunc(&$arr1, &$arr2) {
// ... modify arrays here
}
参照渡しする関数の引数の先頭に&
. それらが関数によって受信されると、それらは参照になります。
&
関数を呼び出すときに、変数の前に を配置する必要はありません (すべきではありません) 。これにより、呼び出し時の参照渡し通知が発生します。通常どおり関数に渡すだけです$res = myfunc($first, $second);
別のアプローチ(配列が大きすぎない場合...)を使用して、元の配列が変更される関数が呼び出される場所を明確にします(ただし、1つの関数で2つのグローバル配列を変更することはおそらくないでしょう...) :
関数呼び出し:
list($array1, $array2) = myfunc($array1, $array2);
働き:
function myfunc($array_x, $array_y){
//do something
return array($array_x, $array_y);
}