傳值:$b=$a //將a變量的值傳值給b變量。
//調式傳值
$a=100;
$b=200;
$b=$a;
echo $b;//100
$a=300;
echo $b;//100
$b=300;
echo $a;//300
unset ($a);
echo $a;
echo $b;
傳引用: $b=&$a //將a變量的地址傳遞給b變量。
//調式傳引用
$a=100;
$b=200;
$b=&$a;
echo $b;//100
$a=300;
echo $b;//300
$b=300;
echo $a;//300
unset ($a);
echo $a;
echo $b;
所以說,傳值只是傳值而已,兩者並沒有關系,當a發生改變時,b不會發生改變。
傳引用就是將a跟b的地址指向同一個地址,只要有一個值發生改變,另一個也會發生改變,當其中一個值被注銷掉,另一個值得變量還是會保留。
當然函數參數傳遞時也可以按值傳遞或引用傳遞。
1.函數參數傳遞時也可以按值傳遞或引用傳遞。
function get_val(&$a,&$b){
$a=300;
$b=400;
}
$a=100;
$b=200;
get_val($a,$b);
echo $a;
echo $b;//有&符號結果是300,400,去掉&結果是100,200
2.全局變量需要在函數體中使用時,除了用參數傳遞方法,還可以在函數體中使用global聲明。或用$GLOBALS["a"]數組讀取。
function get_val(){
//global $a,$b;
//echo $a,$b;
echo $GLOBALS["a"],
$GLOBALS["b"];//這個是獲取全局變量
}
$a=100;
$b=200;
get_val();//調式結果為100,200