実パラメータの数が仮パラメータの数より小さい場合、PHP は警告を発行します。これは、PHP の解釈メカニズムが、定義されているが使用されていないパラメータがあると判断し、関数の機能に影響を与える可能性があるためです。したがって、警告が発せられます。ただし、実パラメータの数が仮パラメータの数よりも大きい場合、PHP はエラーを報告しません。最初のいくつかのパラメータのみが使用され、超過したパラメータは破棄されます。
PHPで関数を書く場合、一般的に関数を呼び出す際に変更されるのは実パラメータではなく仮パラメータですが、仮パラメータにアドレス文字を追加すると実パラメータの値が変更されてしまいます。なぜですか?
以下の例を参照してください:
コードをコピーします コードは次のとおりです:
//関数 swap() を作成し、関数の実際のパラメーター値が変更されていません
function swap($a,$b ) {
echo "
swqp() 関数に入る前
n";
echo "交換前: 仮パラメータ a=$a、仮パラメータ b= $b
n";
$c =$b;
$a=$b;
$b=$c;
echo "交換後: 仮パラメータ a=$a、仮パラメータ b=$b
;n";
echo "swap() 関数を終了
コードをコピーします コードは次のとおりです:
// swap() 関数パラメータの値変更
function swap1(&$a, &$b) {
echo "
Enter swap1() function
n";
echo "交換前: 仮パラメータ a= $a, 仮パラメータ b=$b
n";
$c=$b;
$a=$b;
$b=$c;
echo "交換後: 仮パラメータ a=$a, 正式パラメータ b=$b
n";
echo "swap () 関数を終了