PHP 関数でパラメータを渡す方法: 1. 値渡し、実パラメータの値をコピーして関数の仮パラメータに渡します; 2. 参照渡し、メモリ アドレスをコピーします。実パラメータを指定して渡します 関数の仮パラメータの場合; 3. デフォルト パラメータ、関数の 1 つ以上の仮パラメータのデフォルト値を指定します; 4. 配列として関数に渡される可変長パラメータ。
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
関数を呼び出すときは、次のことが必要です。関数にパラメータを渡す場合、関数に渡されるパラメータは実パラメータと呼ばれ、関数によって定義されるパラメータは仮パラメータと呼ばれます。関数にパラメータを渡すには、値渡し、参照渡し、デフォルト パラメータ、および可変長パラメータの 4 つの方法があります。
1. 値の受け渡し
値の受け渡しは、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; ?>
実行結果は次のとおりです。
函数外,交换前 $x = 5, $y = 7 函数内,交换前 $a = 5, $b = 7 函数内,交换后 $a = 7, $b = 5 函数外,交换后 $x = 5, $y = 7
実行結果から、関数内では実際に値が交換されていることがわかりますが、関数の外では値が交換されません。変わりません。したがって、関数を値で渡すことは、単に変数のコピーを渡すことであると言えます。したがって、関数が関数の外部パラメーターを操作できるようにしたい場合は、参照渡しを使用する必要があります。
2. 参照渡し
参照渡しとは、実パラメータのメモリアドレスをコピーして仮パラメータ、実パラメータ、仮パラメータに渡すことです。これらはすべて同じメモリ アドレスを指しているため、仮パラメータに対する関数の操作は、関数の外部にある実際のパラメータに影響を与えます。
参照渡しとは、実パラメータのメモリアドレスを関数の仮パラメータに渡すことです。したがって、実パラメータと仮パラメータは同じメモリ アドレスを指します。このとき、関数内のすべての操作は関数の外の実パラメータの値に影響を与えます。参照渡しの方法は、以下のように値の受け渡しをベースに&記号を追加する方法です。
function name (&参数1, &参数2, ..., &参数3) { ... }
【例】 上記例のコードを少し修正して、参照渡しの方法を使用します。 swap 関数に渡します。パラメータ、コードは次のとおりです:
<?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; ?>
実行結果は次のとおりです:
函数外,交换前 $x = 5, $y = 7 函数内,交换前 $a = 5, $b = 7 函数内,交换后 $a = 7, $b = 5 函数外,交换后 $x = 7, $y = 5
3. デフォルトのパラメータ
デフォルトのパラメータは特定の値であるか、複数の仮パラメータでデフォルト値を指定します。関数を呼び出すときに対応する値が渡されない場合、関数はこのデフォルト値を使用します。これにより、パラメータなしで呼び出すときのエラーを回避でき、また、いくつかのプログラムはより合理的です。対応するパラメータが渡されると、このデフォルト値は置き換えられます。
関数のデフォルトのパラメータは次のとおりです:
function name ($str = 'PHP中文网', $url) { echo $str; }
このうち、仮パラメータ $str の後の「PHP Chinese Network」はデフォルト値であり、= 接続は次のようにする必要があります。仮パラメータとデフォルト値の間で使用されます。
[例] 次のようにデフォルト パラメータを使用して関数を定義してみましょう:
<?php function add($a, $b=56){ echo $a.' + '.$b.' = '.($a+$b).'<br>'; } add(11); add(37, 29); ?>
実行結果は次のとおりです:
11 + 56 = 67 37 + 29 = 66
デフォルト パラメータは複数にすることもできます。デフォルト パラメータはデフォルト以外のパラメータの右側に配置する必要があり、指定するデフォルト パラメータの値は変数ではなく、数値や文字列などの特定の値である必要があります。
[例] 以下のように複数のデフォルトパラメータを持つ関数を定義してみましょう:
<?php function add($a, $b=33, $c=57){ echo $a.' + '.$b.' + '.$c.' = '.($a+$b+$c).'<br>'; } add(11); add(31, 22); add(64, 9, 7); ?>
実行結果は次のようになります:
11 + 33 + 57 = 101 31 + 22 + 57 = 110 64 + 9 + 7 = 80
4. 可変長パラメータ
#PHP 5.6 以降のバージョンでは、関数の仮パラメータで... を使用して、関数が可変数のパラメータを受け入れることができ、可変パラメータが配列として渡されることを示すことができます。関数。例は次のとおりです。<?php function test(...$arr){ print_r($arr); } echo '<pre class="brush:php;toolbar:false">'; test(1, 2, 3, 4); test(5, 6, 7, 8, 9, 10); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8 [4] => 9 [5] => 10 )
PHP ビデオ チュートリアル "
以上がPHPで関数にパラメータを渡すにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。