実パラメータの数が仮パラメータの数より小さい場合、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
";
echo "swap() 関数を終了します
n";
}
$variablea=5;
$variableb=10;
echo "前swap() 関数の呼び出し: ";
echo "実際のパラメータ a=$variablea,実際のパラメータ b=$variableb
n";
swap($variablea,$variableb);
echo " swap() 関数を呼び出した後: ";
echo "実パラメータ a=$variablea,実パラメータ b=$variableb
n";
?>
コードをコピー コードは次のとおりです:
//swap() 関数パラメータの値の変更をテストしますEnter swap1() function
n";
echo "交換前: 仮パラメータ a=$a、仮パラメータ b=$b
n";
$c=$ b;
$a=$b;
$b=$c;
echo "交換後: 仮パラメータ a= $a, 仮パラメータ b=$b
n";
echo "swap() 関数を終了します