#このチュートリアルの動作環境: Windows7 システム、PHP8 バージョン、DELL G3 コンピューター関数を呼び出すときはパラメーターを渡す必要があります関数に渡されるパラメータは実パラメータと呼ばれ、関数によって定義されたパラメータは仮パラメータと呼ばれます。関数にパラメータを渡すには、値渡し、参照渡し、デフォルト パラメータ、および可変長パラメータの 4 つの方法があります。PHP では、値の受け渡しとは、関数呼び出し時に実パラメータをコピーして、関数の仮パラメータに渡すことを指しますが、実際には、仮パラメータと実パラメータはそれぞれ異なる記憶域を占有します。値の転送の特徴は一方向の転送、つまり、呼び出し元の関数が呼び出されたときに、記憶装置が仮パラメータに割り当てられ、実パラメータの値が仮パラメータに渡されることです。 、仮パラメータの記憶ユニットは解放され、仮パラメータの値は になります。いかなる変更も実パラメータの値には影響せず、実パラメータの記憶ユニットはその値を変更せずに保持および維持します。
値の受け渡し
値の受け渡しは、PHP の関数のデフォルトの値の受け渡し方法であり、「値によるコピー受け渡し」とも呼ばれます。名前が示すように、値を渡すメソッドは実パラメータの値をコピーして関数の仮パラメータに渡すため、関数内でパラメータの値を操作しても、関数の外の実パラメータには影響しません。したがって、関数で実際のパラメータの値を変更したくない場合は、値で渡すことができます。値転送の特徴は一方向の転送です。つまり、呼び出し元の関数が呼び出されると、記憶装置が仮パラメータに割り当てられ、実パラメータの値が転送されます。仮パラメータ 呼び出しが完了すると、仮パラメータが保存されます ユニットは解放され、仮パラメータ値の変更は実パラメータの値に影響を与えません 実パラメータの記憶装置は依然として保持し、維持します値は変更されません。[例] 以下のような簡単な関数を定義します この関数には 2 つのパラメータがあり、関数内でパラメータの値が交換されます。
<?php function swap($a, $b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
参照渡し
参照渡しとは、実パラメータのメモリアドレスをコピーして、それを仮パラメータに渡すことです。パラメータと仮パラメータはどちらも同じメモリ アドレスを指しているため、仮パラメータに対する関数の操作は関数の外部にある実際のパラメータに影響を与えます。 参照渡しとは、実パラメータのメモリアドレスを関数の仮パラメータに渡すことです。したがって、実パラメータと仮パラメータは同じメモリ アドレスを指します。このとき、関数内のすべての操作は関数の外の実パラメータの値に影響を与えます。参照渡しの方法は、以下のように値の受け渡しをベースに&記号を追加する方法です。function name (&参数1, &参数2, ..., &参数3) { ... }
<?php function swap(&$a, &$b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
php の値の受け渡しと参照の受け渡しの違い
値の転送: 関数のスコープ内で変数の値を変更しても、関数の外の変数の値には影響しません。 参照による受け渡し: メモリ アドレスは参照によって渡されるため、関数のスコープ内では、値への変更は関数の外側にも反映されます。 2 つのコードを入力すると、2 つの違いがわかります。現象から本質を見てみましょうfunction sum($a){ $a++; $b = $a; return $b; } $a = 10; echo sum($a).'<br />';//11 echo $a;//10
function sum(&$a){ $a++; $b = $a; return $b; } $a = 10; echo sum($a).'<br />';//11 echo $a;//11
説明:
値渡しでは、元のパラメータの値は他の関数を呼び出した後も元の値のままですが、参照渡しでは元の値が変更されます。値渡しの方法で値を渡す場合、元の値を変更する必要がある場合はコードをコピーする必要があり、値が十分に大きかったり、大きな文字列だったりするとコードがどんどん増えてしまいます。反復的ですが、参照渡しは PHP コードをコピーする必要がないため、パフォーマンスの向上に大きな利点があります。 PHP 関連の知識について詳しくは、php中文网 をご覧ください。
以上がPHPでの値の受け渡しは何を意味しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。