1

関数内で変更する必要がある 2 つの配列があります。その配列を渡す方法は? 私が知っている方法は、関数内で 2 つの配列をグローバル変数として宣言することです。

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

それは理にかなっており、代わりに2つの配列を参照として渡すことは可能ですか? どのように(はいの場合)?

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

別のアプローチ(配列が大きすぎない場合...)を使用して、元の配列が変更される関数が呼び出される場所を明確にします(ただし、1つの関数で2つのグローバル配列を変更することはおそらくないでしょう...) :

関数呼び出し:

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 に答える