php での関数のパラメータの受け渡しには、形式的なパラメータの受け渡し (C 言語などのプログラミング言語からの用語の借用) があります。
つまり、変数の値を関数のパラメーターに代入することです。関数パラメーターに対して実行されるすべての操作は、元の変数とは何の関係もありません。
//php function testX( $b ) { return $b-=2; } $a = 5 ; $c = testX($a); print_r($a);//5 print_r($c);//3
そして、アドレス転送(参照転送)とは、変数のアドレスを関数の引数に与えることであり、関数内の引数に対する演算はすべて変数に対する演算と等価です。
//php function testS( &$b ) { return $b-=2; } $a = 5 ; $c = testX($a); print_r($a);//3 print_r($c);//3
PHP では、関数のパラメーターと変数はすべてメモリ内のスペースを空けますが、通常のパラメーターの受け渡しではパラメーターに値が割り当てられますが、参照の受け渡しでは割り当てられず、変数のアドレスが代入されます。
パラメータが配置されているスペースに移動します。
特に注目すべきは、PHP5以降、参照の受け渡しの書き方が変更されたことです。上記のコードに示すように、PHP の記述方法を他のプログラミング言語と同じ方法に変更します。定義する場合は
& を使用する必要がありますが、呼び出す場合は & を使用する必要はありません。これまでの書き方とは大きく異なります。
//php以前的写法 function &testS( &$b ) { return $b-=2; } $c = &testS($a);
利点:
個人的には、この書き方の変更は、php 言語の独自性を減らし、他のプログラミング言語の書き方に近づけることだと思います。ある意味、他のプログラミング言語に精通しているプログラマーが PHP をより早く習得できるようになります。コードの読み取りと論理理解の観点から、関数内の変数に対して実行されるすべての操作は完全に無視されます。コードの抽象化にとってはより理にかなっています。
欠点:
開発の最前線にいるプログラマーにとって、これはクレイジーな変更だと思います。特に二次開発をしている人にとっては。二次開発者は、先行開発者に基づいて開発する必要があります。関数を見るとき、私は値による参照関数を & で区別することに慣れています。この記述方法がなければ、すべての関数は同じになります。値による参照関数への呼び出しが含まれる場合、プログラマは、値による参照関数の内部に入る必要があります。コードの詳細を確認する機能。特にプログラムにエラーがある場合。値による参照関数によって変数に加えられたすべての変更を詳細に理解する必要があります。また、& をキャンセルして参照関数を呼び出すということは、プログラムによって呼び出されるすべての関数を確認する必要があることを意味し (どの関数が参照関数であるかわからないため)、その作業負荷は容易に想像できます。
グローバル変数 (global) もあります。これはパラメータを直接かつ迅速に定義する方法です。関数で使用するパラメータをグローバル変数として設定します。このように、関数内の操作では変数自体が直接使用されます。
短いプログラムで使用するのには問題ありませんが、これは外部ファイルを呼び出すときにパラメータを定義する理想的な方法ではありません。
以上がPHP関数にパラメータを渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。