この記事は主にPHPを学習する初心者を対象としているため、具体的な例を使って説明します。
まず、2 つの数値の合計を計算するための PHP 関数 を記述する必要があります。これは次のように記述できます:
/** *计算两个数的和,并返回计算的结果 * @param number $a * @param number $b * @return number */ function sum($a, $b){ return $a + $b; }
同様に、3 つの数値の合計を計算する必要がある場合は、次のように記述できます。 :
/** *计算两个或三个数的和,并返回计算的结果 * @param number $a * @param number $b * @return number $c 该参数可以不传入值,默认为0 */ function sum($a, $b, $c = 0){ return $a + $b + $c; }
現時点で、任意の数の数値の合計を計算する必要がある場合、PHP 関数をどのように記述する必要がありますか?
もちろん、そのような関数を実現するために、関数の引き渡しパラメータとして配列を使用することを検討することもできます:
/** *计算任意多个数的和,函数参数params必须为array类型 * @param array params */ function sum($params){ $total = 0; foreach ($params as $i){ $total += $i; } return $total; }
まあ、実際にはこのアプローチには何の問題もありません。なぜなら、変数パラメータが誕生する前のプログラム開発プロセスだからです。 では、任意の数のパラメーターを渡す必要がある場合、それらは配列または他の同様のコレクションによって表されます。しかし、この種の伝達は十分に明確で直感的だと思いませんか? PHP プログラマーは、変数に関する詳細情報を表示するための関数 var_dump() が PHP にあることを知っておく必要があります。たとえば、次のようになります。
$age = 18; var_dump($age); //显示变量$age的详细信息
複数の変数に関する情報を表示する必要がある場合は、次のように使用することもできます:
$name = '张三'; $age = 18; $gender = true; var_dump($name, $age, $gender);
var_dump() は同時に任意の数の変数を受け取ることができ、配列の形式で渡す必要がないことがわかっています。このパラメーターの受け渡し方法はより直感的で洗練されています。任意の数のパラメーターを渡すこの形式は、変数パラメーターと呼ばれます。もちろん、 sum() 関数は次の方法でも実装できます:
/** *计算任意多个数的和,并返回计算后的结果 */ function sum(){ //这里的括号中没有定义任何参数 $total = 0; //使用func_get_args()来获取当前函数的所有实际传递参数,返回值为array类型 $varArray = func_get_args(); foreach ($varArray as $var){ $total += $var; } return $total; } /*****下面是调用示例*****/ echo sum(1, 3, 5); //计算1+3+5 echo sum(1, 2); //计算1+2 echo sum(1, 2, 3, 4); //计算1+2+3+4
上の例に示すように、現在の関数で PHP組み込み関数func_get_args() を使用している限り、いつでもそれを渡すことができます。実際のパラメータ配列の関数を呼び出すと、パラメータ配列を処理するだけで済みます。
注 1: 1. 呼び出し時にパラメーターが渡されない場合、関数 func_get_args() は配列型を返しますが、空の配列になります (配列には要素が含まれません)。 2.func_get_args() は関数内でのみ呼び出すことができ、それ以外の場合は警告メッセージが表示されます。 3. func_get_args() 関数はインデックス パラメータを受け取り、パラメータ配列内の指定されたインデックスにあるパラメータを取得できます。たとえば、渡された最初の引数を取得したい場合は、func_get_args(1) を呼び出します。 4. さらに、関数内で func_num_args() を呼び出すこともできます。これにより、現在の関数呼び出しで渡されたパラメータの数を返すことができます。
注 2: PHP 変数パラメーターの実装は、JavaScript 変数パラメーターの実装と非常によく似ています。PHP は組み込み関数 func_get_args() を使用して実装し、JavaScript は関数 組み込み変数引数 を使用します。それを実装するために。
注 3: 最終的な sum() 関数コードでは、sum() 関数は仮パラメータを定義していないため、この関数を呼び出すときに 0、1、2~n のパラメータを渡すことができます。ただし、一般に、合計を計算するには少なくとも 2 つの数値が必要です。したがって、sum() 関数の定義で 2 つの仮パラメータ (例: sum($a, $b)) を定義でき、他のコードは変更されません。このように、この関数を呼び出すときは、少なくとも 2 つのパラメーターを渡す必要があります。
注4: PHPには配列内のすべての要素の合計を計算する組み込み関数array_sum()があるため、上記のコードの最終バージョンは次のようになります:
/** *计算任意多个数的和,并返回计算后的结果 */ function sum($a, $b){ return array_sum(func_get_args()); }
以上がPHP変数パラメータの基本的な使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。