當實參個數<形參個數 時php會發出警告,因為php的解釋機制會認為,有參數被定義了卻沒有被使用,那很可能會影響函數的功能。所以會發出警告。然而,當 實參個數>形參個數 時,php是不會報錯的,它只會取前面的幾個參數,多余的則將會丟棄。
在PHP中編寫函數,一般情況下調用函數的時候,改變的值都是形參而不是實參.但是如果在形參中加入地址符時候就會改變實參的值,為什麼?
請看下面的例子:
復制代碼 代碼如下:
<?php
//編寫一個函數swap(),測試該函數的實參值無改變
function swap($a,$b) {
echo "<p>進入swqp()函數前<br>\n";
echo "交換前:形參a=$a,形參b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交換後:形參a=$a,形參b=$b<br>\n";
echo "退出swap()函數<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "調用swap()函數前: ";
echo "實參a=$variablea,實參b=$variableb<br>\n";
swap($variablea,$variableb);
echo "調用swap()函數後: ";
echo "實參a=$variablea,實參b=$variableb<br>\n";
?>
復制代碼 代碼如下:
<?php
//測試swap()函數實參的值改變
function swap1(&$a,&$b) {
echo "<p>進入swap1()函數<br>\n";
echo "交換前: 形參a=$a,形參b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交換後: 形參a=$a,形參b=$b<br>\n";
echo "退出swap()函數<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "調用swap1()函數前: ";
echo "實參a=$variablea,實參b=$variableb<br>\n";
swap1($variablea,$variableb);
echo "調用swap1()函數後: ";
echo "實參a=$variablea,實參b=$variableb<br>\n";
?>
//上面的兩個例子就是說明,求教了~~~