php中變數預設是傳值賦值,既當將乙個表示式的值賦予乙個標量時,整個原始表示式的值被賦值到目標變數。這意味著,當乙個變數的值賦予另外乙個變數時,改變其中乙個變數的值,將不會影像另外乙個變數。
php也提供了另外一種方式給變數賦值:引用賦值。這意味著新的變數簡單引用(「指向」 原變數位址)了原始變數。改動新的變數將影像到原始變數,反之亦然。使用引用賦值,簡單將一&符號加到將要賦值的變數前。
物件預設是傳引用。
對於較大的資料,傳引用比較好,這樣會節省記憶體的開銷。
變數的作用域(scope):函式內的變數只能用在定義它的函式內。
例如:
function
doublevalue
($var)
$variable = 3;
doublevalue($variable);
echo
"\$variable is :$variable";
//$variable is :
echo
"\$temp is :$temp";
/** notice: undefined variable: temp
* $temp is :
*/
因為函式doublevalue()沒有返回值,所以va
riab
le的值
依然是3
,而temp在函式內,所以函式外不存在該變數
若想在指令碼其他地方引用函式變數,最簡單的方法就是return 返回結果, 呼叫的指令碼可以僅給區域性變數(local variable)賦予返回值。
function
doublevalue
($var)
$variable = 3;
$temp = doublevalue($variable);
echo
"\$temp is :$temp";
//$temp is :6
在函式內部同樣可以使用變數名稱te
mp.但
是,函式
內部的 temp跟函式外部的$temp是不一樣的。一般的規則:僅在函式內部使用的變數就生存在函式內部,函式外部是否有同名變數對它毫無影響。
但一下三種情況例外:
1、由引用(reference)傳遞的變數;
2、在函式中被定義為全域性變數(global
variable)的變數
3、php在執行時自動生成的superglobal(也有人稱為auto-global、自動全域性變數),
負責儲存使用者及環境值。
若想獲取函式內的內容,除了使用return語句返回值,也可使用引用傳參。
引用(reference)某個將作為引數的變數,也是返回運算結果或使用全域性變數的方法之一。既,若在函式內部改變了某個變數的值將影響原始變數。
function
doublevalue1
(&$var1)
$variable1 = 3;
doublevalue1($variable1);
echo
"\$variable1 is : $variable1";
//$variable1 is : 6
作用域與函式傳值呼叫
在c語言中,所有變數 巨集 函式 函式的宣告形式即為函式原型 自定義資料型別以及別名等資料必須先宣告後使用。通常在標頭檔案中包含這些宣告,如extern int global data,這個宣告只是告訴編譯器全域性變數的型別和名字,至於對它的定義 分配記憶體的宣告即為定義 則在別處進行。1 作用域 ...
變數的傳值與傳引用
傳值 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 ...
PHP的傳值與引用,php 傳值與傳引用的區別詳解
在php中傳值與傳引用對於我們來講是有比較大的區別的乙個引用可以呼叫記憶體位址賦值了,這樣只要記憶體位址中內容變化而賦值的變數也就變化了,付值只是把記憶體中值給其它變數而己。傳值 函式引數壓棧的是引數的副本。任何的修改是在副本上作用,沒有作用在原來的變數上。傳引用 壓棧的是引用的副本。由於引用是指向...