php中 傳值 和 傳引 用的區別

2021-08-16 01:20:46 字數 757 閱讀 1237

傳值

是把實參的值賦值給行參

那麼對行參的修改,不會影響實參的值

傳位址

是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int

那麼傳位址以後,實參和行參都指向同乙個物件

$b = &$a;  $b的位址指向$a的位址,兩者指向同乙個物件
傳引用

真正以位址的方式傳遞引數後,行參和實參都是同乙個物件,只是他們名字不同而已,對行參修改將影響實參值。

即傳址時只需在函式呼叫時在引數的前面加上"&"號即可。將函式外部的值的記憶體位址傳遞給內部的引數,在函式內部的所有操作都會改變函式外部引數的值。

$a = "123";

$b = &$a;

echo $a."-".$b; // 輸出:123-123

echo "

";  $b = "456465"; // 輸出:456465-456465

echo $a."-".$b;

// 結論 :

// php 傳引用時 形參 發聲改變的時候 實參也發生改變;

僅討論一下值傳遞和引用:

所謂值傳遞,就是說僅將物件的值傳遞給目標物件,就相當於copy;系統將為目標物件重新開闢乙個完全相同的記憶體空間。

所謂引用,就是說將物件在記憶體中的位址傳遞給目標物件,就相當於使目標物件和原始物件對應同乙個記憶體儲存空間。此時,如果對目標物件進行修改,記憶體中的資料也會改變。

php中傳值和傳引用的區別?

之前也有理解過傳值和傳引用的不同,但是好腦袋不如個爛筆頭,還是記錄下來分享下來沒事多看看吧傳值的話 如果是非物件,會傳乙個值的拷貝,對這個變數做任何改動都不影響原值。傳引用或者傳物件,是傳真實的記憶體位址,對這個變數做的改動會影響原值。不多說看 好理解呢 function func1 a funct...

PHP的傳值與引用,php傳值和傳引用區別

php傳值 在函式範圍內,改變變數值得大小,都不不會影響到函式外邊的變數值。testa 1 定義變數a testb 2 定義變數b testb testa 變數a賦值給變數b echo testb 顯示為1 傳引用 類似於c語言的指標了,感覺差不多。打個比方,我有一橦房子,我給你一把鑰匙,我們二個都...

PHP 傳值和傳引用 傳位址的區別

傳值,是把實參的值賦值給行參 那麼對行參的修改,不會影響實參的值 傳位址是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int 那麼傳位址以後,實參和行參都指向同乙個物件 傳引用真正的以位址的方式傳遞引數 傳遞以後,行參和實參都是同乙個物件,只是他們名字不同而已 對行參的修改將影響實參的值 a...