0

私はphpが初めてで、JavaとCでのコーディング経験があります。そのため、オプションのパラメーターは私にとって少し混乱しています。関数に 2 つのオプション パラメーターがあり、単一の引数を渡す場合、どのパラメーターが引数に対してマップされるかを知りたいです。

4

3 に答える 3

5

パラメータの順序は (左から右に) 変更されないため、引数を 1 つだけ指定すると、最初のパラメータが値を受け取り、2 番目のパラメータがデフォルト値を受け取ります。

例えば:

function foo( $a = 1, $b = 2) {}

foo();       // $a = 1, $b = 2
foo( 3);     // $a = 3, $b = 2
foo( 4, 5);  // $a = 4, $b = 5

パラメータの順序により、$bのデフォルト値のままで の値を設定する方法はないことに注意してください。それを達成するには、次のよう$aに呼び出す必要があります。foo()

foo( 1, 6);
于 2012-10-16T16:52:07.343 に答える
1

最初の引数は常にパラメーターの最初の変数に渡され、2 番目の引数は 2 番目の変数に渡され、オプションかどうかに関係なく、次のように続きます。

オプションのパラメーターとオプションではないパラメーターの唯一の違いは、すべての非オプションのパラメーターを満たすのに十分な引数が呼び出しにない場合に警告がスローされることです。

function f($a = 1, $b, $c, $d = 2)
{
  var_dump($a, $b, $c, $d);
}
f('x');

関数内は$a「x」に$bなり、 nullになり、2 になり$cますが、警告がスローされます。$d

したがって、オプションのパラメーターを非オプションのパラメーターのままにしておくことは意味がありません-構文的には正しいですが-警告を生成せずに呼び出しでそれらを除外することはできないためです。

于 2012-10-16T17:02:00.960 に答える
0

例えば

function test($test = null, $test_2 = null, $test_3 = null) {

}

test(1) => $test=1;
test(1,1) => $test=1;$test_2=1;
test(1,1,1) => $test=1;$test_2=1;$test_3=1;
于 2012-10-16T16:52:36.550 に答える