PHP是一種腳本語言,傳遞參數(shù)時(shí)有兩種傳遞方式,分別為值傳遞和引用傳遞。值傳遞是指將變量的值復(fù)制一份到函數(shù)中,函數(shù)中對這個(gè)值的操作不會影響原值。引用傳遞是指將變量在函數(shù)中的操作對原變量產(chǎn)生影響。下面通過一些例子來說明php引用傳遞:
// 值傳遞 function valueTrans($num) { $num = 5; } $num = 1; valueTrans($num); echo $num; // 輸出1
在上面的代碼中,變量$num在函數(shù)中被賦值了5,但是在函數(shù)外的$num沒有被改變,這就是因?yàn)?value變量是傳遞的值。
// 引用傳遞 function referenceTrans(&$num) { $num = 5; } $num = 1; referenceTrans($num); echo $num; // 輸出5
在上面的代碼中,變量$num在函數(shù)中被賦值了5,同時(shí)在函數(shù)外的$num也被改變了,這時(shí)是因?yàn)? value變量是傳遞的地址,也就是說,傳遞的是地址而非值,所以在函數(shù)里改變$num的值,也會改變函數(shù)外的$num的值。
// 引用傳遞應(yīng)用 function reference($arr) { $arr[0] = 'a'; } $myArr = ['b', 'c']; reference($myArr); print_r($myArr); // 輸出 array('a', 'c')
上面的代碼中,雖然傳遞進(jìn)去的是數(shù)組,但是函數(shù)中改變了數(shù)組中指定的值,所以更改值之后,在函數(shù)外部也能看到更改后的數(shù)組。
在使用引用傳遞時(shí),需要注意的是函數(shù)定義時(shí)的符號&不能省略,否則PHP會當(dāng)做值傳遞。
在編寫復(fù)雜的程序時(shí),引用傳遞可以節(jié)省一定的內(nèi)存,因?yàn)椴恍枰诙褩V袨閰?shù)復(fù)制一份,也可以通過操作參數(shù)來從一個(gè)函數(shù)中返回多個(gè)值。
總之,PHP引用傳遞是非常有用的,可以讓變量在函數(shù)中被修改并應(yīng)用于多個(gè)作用域,同時(shí)可以提高程序的運(yùn)行效率和代碼的復(fù)用性。