php中函數參數傳遞有形參傳遞(借用c語言等程式語言的說法)。
也就是把變數的值賦值給函數的參數,對函數參數所做的一切操作都與原始變數無關。
//php function testX( $b ) { return $b-=2; } $a = 5 ; $c = testX($a); print_r($a);//5 print_r($c);//3
而址傳遞(引用傳遞)則是把變數的位址給函數的參數,函數中對參數做的一切運算都等同於給變數做運算。
//php function testS( &$b ) { return $b-=2; } $a = 5 ; $c = testX($a); print_r($a);//3 print_r($c);//3
在php中,函數參數和變數一樣都會在記憶體中開闢空間,但是正常的參數傳遞是把值賦給參數,而引用傳遞則不是,它會把變數的位址放
到參數所在的空間。
特別注意的是php5之後對引用傳遞的寫法做了改變。如上面的程式碼所示,將php的寫法改為與其他程式語言的寫法一樣。定義時需要
使用&,呼叫時不需要使用&.與先前的寫法有很大的不同。
//php以前的写法 function &testS( &$b ) { return $b-=2; } $c = &testS($a);
優點:
這種寫法的改變,個人認為是為了減少php語言的獨特性,向其他的程式語言的書寫方式靠攏。某種意義而言它使得熟悉其他程式語言的程式設計師能更快的掌握php。從程式碼閱讀和邏輯理解的角度考慮,它完全忽略了函數內部對變數所做的一切操作。對於程式碼抽象化更有意義。
缺點:
我想對於開發第一線的程式設計師來說,這是個令人抓狂的改變。尤其是做二次開發的人員來說。二次開發的人員需要在前人的基礎上進行開發。看到函數時習慣了&來分辨引用傳值函數,沒有這種寫法,所有函數都一樣,如果涉及引用傳值函數的調用,那麼程式設計師需要去函數內部查看程式碼細節。特別是程式出現錯誤時。需要去詳細的了解引用傳值函數對變數所做的一切改變。而取消了&去呼叫引用函數,則代表需要去查看程式呼叫的所有函數(因為你不知道哪一個函數是引用函數),工作量可想而知!
還有就是全域變數(global)。這是一種直接且快速的參數定義方式。將函數要用到的參數設為全域變數。這樣在函數內部的操作直接使用變數本身。
在簡短的程式中使用是沒有問題的,但是呼叫外部檔案的時候這並不是理想的參數定義方式!
以上是php函數如何傳遞參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

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