php值傳遞是什麼意思
在php中,值傳遞是指在呼叫函數時將實際參數複製一份再傳遞給函數的形參,實際上形參和實參分別佔用不同的儲存單元。值傳遞的特徵是單向傳遞,即主調函數調用時給形參分配存儲單元,把實參的值傳遞給形參,在調用結束後,形參的存儲單元被釋放,而形參值的任何變化都不會影響到實參的值,實參的儲存單元仍保留並維持數值不變。
本教學操作環境:windows7系統、PHP8版、DELL G3電腦
在呼叫函數時,需要向函數傳遞參數,被傳入函數的參數稱為實參,而函數定義的參數稱為形參。而傳遞參數給函數的方式有四種,分別是值傳遞、引用傳遞、預設參數、可變長度參數。
值傳遞
值傳遞是 PHP 中函數的預設傳值方式,也稱為「拷貝傳值」。顧名思義值傳遞的方式會將實參的值複製一份再傳遞給函數的形參,所以在函數中操作參數的值並不會對函數外的實參造成影響。因此如果不希望函數修改實參的值,就可以透過值傳遞的方式。
值傳遞的特點是單向傳遞,即主調函數呼叫時給形參分配存儲單元,把實參的值傳遞給形參,在調用結束後,形參的存儲單元被釋放,而形參值的任何變化都不會影響到實參的值,實參的存儲單元仍保留並維持數值不變。
【範例】下面定義一個簡單的函數,函數有兩個參數,在函數中交換參數的值。
<?php function swap($a, $b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
運行結果如下:
透過運行結果可以看到,在函數內,數值確實是交換了,而在函數外部,數值卻沒有變化。因此可以說,函數的值傳遞只是傳遞變數的副本。那麼要是想讓函數能夠操作函數外實參的話,就需要使用引用傳遞的方式了。
引用傳遞
參數的引用傳遞就是把實參的記憶體位址複製一份,然後傳遞給函數的形參,實參和形參都指向同一個記憶體位址,因此函數對形參的操作,會影響到函數外的實參。
依引用傳遞就是將實參的記憶體位址傳遞到函數的形參中。因此實參和形參指向的是同一個記憶體位址。這時在函數內部的所有運算都會影響到函數外實參的值。引用傳遞的方式就是在值傳遞的基礎上加上一個&符號,如下所示:
function name (&参数1, &参数2, ..., &参数3) { ... }
【範例】將上面範例的程式碼略作調整,使用引用傳遞的方式向swap 函數中傳遞參數,程式碼如下:
<?php function swap(&$a, &$b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
執行結果如下:
php值傳遞和引用傳遞的差異
值傳遞:在函數範圍內,改變變數值得大小,都不會影響函數外邊的變數值。
引用傳遞:在函數範圍內,對值的任何改變,在函數外部也有所體現,因為傳引用傳的是記憶體位址。
敲兩段程式碼然後就可以看出兩者的區別,咱們透過現像看本質
function sum($a){ $a++; $b = $a; return $b; } $a = 10; echo sum($a).'<br />';//11 echo $a;//10
function sum(&$a){ $a++; $b = $a; return $b; } $a = 10; echo sum($a).'<br />';//11 echo $a;//11
兩段程式碼的差異在於函數sum的參數上,一個是傳值$ a,另一個是傳引用&$a,結果是傳值過後$a的值最終沒有改變,反之傳引用過後$a的值發生了變化。這裡學過C語言的童鞋就明白是怎麼回事了,壓棧的是引用的複製。
由於引用是指向某個變數的,所以對引用的操作其實就是對他指向的變數的操作。 (作用和傳指標一樣,只是不用解引用) &是指向某個變數位址的符號,函數sum中的形參&$a其實就是實參$a,那麼將其傳進sum中進行了一次運算之後,實參$a的值其實也發生了改變,就是這麼回事。
說明:
按值傳遞中原來參數的值在呼叫其他函數之後還是原來的值,而引用傳遞則是改變了原來的值。依照按值傳遞的做法來傳值時,如果需要原來的值發生改變,則需要在進行程式碼複製,若是值夠大或是一大串字串時,會使程式碼比較多,重複,而引用傳遞則不需要複製PHP程式碼,對提高效能這一個方面有很大的優勢。
更多PHP相關知識,請造訪php中文網!
以上是php值傳遞是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7
