ホームページ  >  記事  >  バックエンド開発  >  PHP関数のパラメータはどのように渡されるのでしょうか?

PHP関数のパラメータはどのように渡されるのでしょうか?

WBOY
WBOYオリジナル
2024-04-10 09:36:01956ブラウズ

PHP 関数のパラメーターを渡すには 2 つの方法があります。 コピー パス: デフォルトのメカニズム。関数はパラメーター値のコピーを受け取り、変更は元の変数に影響を与えません。参照パス: 関数は元の変数への参照を受け取り、変更は元の変数に直接影響します。

PHP 函数参数是如何传递的

#PHP 関数パラメータ受け渡しメカニズム

PHP では、関数にパラメータを渡すときに、次の 2 つの受け渡しメカニズムがあります。

  • コピー パス: 関数はパラメーター値のコピーを受け取り、コピーを変更しても元の変数には影響しません。これは、PHP のデフォルトのパラメータ受け渡しメカニズムです。
  • 参照パス: 関数は元の変数への参照を受け取り、それを変更すると元の変数に影響します。

コピー パス

関数パラメーターは、デフォルトで値渡しメカニズムを採用しています。つまり、パラメーター値のコピーが関数内で作成されます。コピーへの変更は関数のスコープ内の変数にのみ影響し、関数外の元の変数には影響しません。

function add($a, $b) {
  $a = $a + $b; // 只修改函数内部的 $a 副本
}

$x = 1;
$y = 2;
add($x, $y); // 传值到函数
echo $x; // 仍为 1,未受函数内更改的影响

参照パス

参照パス メカニズムは、パラメータの前に

& 記号を追加することで実装できます。このように、関数の内部操作は値のコピーではなくなり、元の変数を直接変更します。

function add_ref(&$a, &$b) {
  $a = $a + $b; // 直接修改原变量
}

$x = 1;
$y = 2;
add_ref($x, $y); // 传引用到函数
echo $x; // 现在为 3,因函数内修改了原变量

実際のケース:

一般的な例は、テーブル データのページング関数です。現在のページ番号やページごとのレコード数などのパラメーターをページング関数に渡す必要があります。値渡しメカニズムが使用されている場合、ページング関数はパラメーターのコピーに対してのみ動作し、データベース クエリ ステートメントのオフセットや制限などの設定を変更することはできません。したがって、この場合、ページング関数が元のパラメータを変更できるようにするために、参照渡しメカニズムを使用する必要があります。

rree

以上がPHP関数のパラメータはどのように渡されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。