所謂值傳遞,就是說僅將對象的值傳遞給目標對象,就相當於copy;系統將為目標對象重新開辟一個完全相同的內存空間。
所謂引用,就是說將對象在內存中的地址傳遞給目標對象,就相當於使目標對象和原始對象對應同一個內存存儲空間。此時,如果對目標對象進行修改,內存中的數據也會改變。
傳值的話,如果是非對象,會傳一個值的拷貝,對這個變量做任何改動都不影響原值。傳引用或者傳對象,是傳真實的內存地址,對這個變量做的改動會影響原值。
代碼如下 復制代碼
function func1($a)
{ $a = $a + 1; }
function func2(&$a)
{ $a = $a + 1; }
$sample = 1;
func1($sample);
echo $sample; // 輸出 1
$sample = 1;
func2($sample);
9.echo $sample; // 輸出 2
總結
在高中時老師告訴我們引用就是把內存地址給變量這樣只要內存地址中發生變化而我們所財會的變量內容也會跟著變了,這個就有點像一個房子放了東西,我們都可以進入拿,只要東西變了我們進去看到的東西是一樣的,而不是我把東西拿在手上,這樣房裡東西變了我這裡不變了。