ホームページ  >  記事  >  バックエンド開発  >  PHPカスタム関数のパラメータを関数間で受け渡す3つの方法を詳しく解説

PHPカスタム関数のパラメータを関数間で受け渡す3つの方法を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-05-04 15:32:5714035ブラウズ

関数を呼び出すときは、関数にパラメータを渡す必要があります。渡されたパラメータは実パラメータとなり、関数が定義されたときのパラメータは仮パラメータになります。前の章では、php カスタム関数のパラメーターを例を用いて説明しました この章では、関数間でパラメーターを渡す 3 つの方法、値による受け渡し参照による受け渡し、およびデフォルトパラメーターに焦点を当てます。

1. 値渡し

実パラメータの値を対応する仮パラメータに代入します。演算の結果は実パラメータには影響しません。つまり、関数が戻った後、実際のパラメータの値は変わりません。値渡しプロセス中、呼び出される関数の仮パラメータは呼び出される関数のローカル変数として扱われます。つまり、メモリ空間がスタック内に開かれ、関数によって入力される実際のパラメータの値が格納されます。呼び出し元の関数なので、実際のパラメータのコピーになります。値転送の特徴は、呼び出される関数の仮パラメータに対する操作はすべてローカル変数として実行され、呼び出し元関数の実パラメータ変数の値には影響を与えないことです。

まず関数 example() を定義します。この関数は、渡されたパラメーター値に対していくつかの操作を実行して出力します。次に、実際のパラメーターである変数 $m を関数の外で定義し、最後に関数 example() を呼び出します。 $m)。仮引数$mと実引数$mの値をそれぞれ関数本体内と外に出力します。

コード例は以下の通りです:

<?php
 function example($m){
   $m = $m + 10;
   echo "在函数内部:m = ".$m ."<br>";  //输出形参的值
 }
 $m = 1;
 example($m);                  // 将实参$m的值传递给形参$m
 echo "在函数外部:m = ".$m;         // 实参的值没有变化,$m = 1
?>

関数の実行結果は以下の通りです:

PHPカスタム関数のパラメータを関数間で受け渡す3つの方法を詳しく解説

2. 参照渡し

参照渡しとはメモリアドレスを渡すことです。実パラメータを仮パラメータに変換します。このとき、関数内の仮パラメータに対するすべての操作は、実パラメータの値に影響を与えます。関数が戻った後、実際のパラメータの値が変更されます。参照渡しを行う方法は、関数を定義するときに仮パラメータの前に「

& 」記号を追加することです。参照渡しのプロセス中、呼び出された関数の仮パラメータもローカル変数としてスタック上のメモリ領域を開きますが、この時点で格納されるのは、呼び出し関数によって入力された実際のパラメータ変数のアドレスです。仮パラメータに対する呼び出された関数の操作はすべて、間接アドレス指定として処理されます。つまり、呼び出し関数内の実際のパラメータ変数には、スタックに格納されているアドレスを介してアクセスされます。このため、呼び出された関数が仮パラメータに対して実行する操作は、呼び出し側関数の実際のパラメータ変数に影響を与えます。

コード例は以下の通りです:

<?php
function example(&$m){             //定义一个函数,同时传递参数$m的地址
 $m = $m + 10;
 echo "在函数内部:m = ".$m ."<br>";  //输出形参的值
}
$m = 1;
example($m);                   // 将实参$m的地址传递给形参$m
echo "在函数外部:m = ".$m;         // 实参的值发生了变化,$m = 11
?>

関数の実行結果は以下の通りです:

PHPカスタム関数のパラメータを関数間で受け渡す3つの方法を詳しく解説

3. デフォルトパラメータ(オプションパラメータ)

を設定する方法もあります。パラメータ、つまりパラメータの選択です。パラメータをオプションとして指定し、そのオプションのパラメータをパラメータ リストの最後に配置し、そのデフォルト値が空であることを指定できます。

アプリケーション例では、オプションのパラメーターを使用して、単純な価格計算関数を実装します。カスタム関数値のパラメータ $tax をオプションのパラメータとして設定します。デフォルト値は空です。 初めて関数が呼び出され、パラメーター $tax に値が割り当てられると、価格が出力されます。関数が 2 回目に呼び出されるときは、パラメーターはコピーされず、価格が出力されます。

コードは次のとおりです:

<?php
function value($price, $tax=""){     //定义一个函数,第二个参数为空
 $price = $price*$tax;
 echo "价格:$price<br>";   //输出价格
}
value(10,5);            // 为可选参数赋值5
value(10);              // 没有给可选参数赋值
?>

出力結果は次のとおりです:

価格: 50

価格: 0

注: デフォルトパラメータを使用する場合、デフォルトパラメータはデフォルト以外のパラメータの右側に配置されます。そうしないと、関数でエラーが発生する可能性があります。

注: PHP5 以降では、デフォルト値も参照によって渡すことができます。次の章では、

カスタム関数の戻り値とは何かについて紹介します。

【おすすめ関連チュートリアル】

1.「

php.cn Dugu Jiijian (4) - PHPビデオチュートリアル

2.

PHPプログラミングの入門からマスターまでの完全なビデオチュートリアル

3. .

php実践的なビデオチュートリアル

以上がPHPカスタム関数のパラメータを関数間で受け渡す3つの方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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