PHP中值傳遞和引用傳遞的區別
#變數傳值是指:將一個變數的值“傳遞”給另一個變數。
有且只有兩種傳遞資料的方式:值傳遞和引用傳遞。 php預設的一般情況下,都使用的是值傳遞。
下面讓我們一起來看看這兩種傳遞方式到底有哪些不同:
值傳遞:
就是將右邊變數的「資料值」本身,複製一份,然後賦值給左邊變數
值傳遞(passl-by-value)過程中,被調函數的形式參數作為被調函數的局部變數處理,即在堆疊中開闢了記憶體空間以存放由主調函數放進來的實參的值,從而成為了實參的一個副本。值傳遞的特徵是被調函數對形式參數的任何操作都是作為局部變數進行,不會影響主調函數的實參變數的值。
舉例:
$v1 = 1; $v2 = $v1;
值傳遞後,兩個變數是互不影響的,互相獨立
<?php //值传递 $v1 = 10; $v2 = $v1; echo "v2的值为:".$v2;//10 $v1 = 11; echo "<br>v2的值为:".$v2;//10
##引用傳遞:
是將右邊變數對資料的參考關係,傳給左邊的變數引用傳遞(pass-by-reference)過程中,被調函數的形式參數雖然也作為局部變數在堆疊中開啟了記憶體空間,但是這時存放的是由主調函數放進來的實參變數的位址。被調函數對形參的任何操作都被處理成間接定址,即透過堆疊中存放的位址存取主調函數中的實參變數。正因為如此,被調函數對形參做的任何操作都影響了主調函數中的。<?php //引用传递 $v1 = 10; $v2 = &$v1; echo "v2的值为:".$v2;//10 $v1 = 11; echo "<br>v2的值为:".$v2;//11
#總結:
#這裡主要考察的就是類似傳值,傳引用的問題。了解到傳值是重新開啟記憶體空間,相當於把原值複製一份,和原值是彼此獨立的。傳引用(指標)只是在原始記憶體區塊加了個指向,引用的值變了,就修改了指向的記憶體位址值,所有指向的引用全部變了。
以上是PHP兩種傳值方式,值傳遞與引用傳遞的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。