搜尋
首頁後端開發php教程PHP 透過引用調用

按引用呼叫就是將變數的參考作為函數參數傳遞。由於PHP不直接支援指標類別機制,所以它支援引用來處理各種操作。在PHP語言中,如果修改任何函數內部的值,則該保存變數的實際值也會被修改;這在按值呼叫中無法實現。在呼叫「引用」中將變數作為引用傳遞時,可以使用與號 (&) 作為前綴。 & 符號本身代表一個變數被用作引用。引用函數也可以作為參數傳遞給另一個函數。在本主題中,我們將學習 PHP 透過引用呼叫。

廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

文法

使用它沒有特殊的語法,但是,在將參數傳遞給函數時需要使用 & 符號。

函數宣告可能如下:

function callByref(&$var)
{
$var.= 'inside the Call By Reference function.';
}

呼叫此函數時不需要任何特殊的東西;可以像普通函數一樣使用(按值呼叫)。

$var = 'Yes, I am';
callByref ($var);

PHP 中的引用呼叫是如何運作的?

在繼續透過引用進行呼叫之前,應該有一些要求,以便可以適合函數。然後,在該指定函數的宣告中,我們可以使用參數變數的引用符號。讓我們透過一個簡單的例子來理解這一點。

function callByref(&$var)
{
$var.= 'Call By Reference function.';
}
$var = 'Try to check the reference, I am inside the ';

當我們嘗試在此處列印 $var 時,將顯示上述訊息

echo $var;
// printing variable before calling function

現在呼叫函數,呼叫這個函數會修改變數的實際值

$var 依照函數內部的寫法。

callByref ($var);
echo $var;
// this will be print the combined value of the string.

在下面提到的PHP語言中可以作為呼叫參考:

  • 變數 – 普通變數。
  • 傳回引用的函數 – 傳回引用的定義明確的函數也可以在依參考呼叫中作為函數參數傳遞(請參閱範例 E3)。

透過引用呼叫的範例

下面提到了不同的例子:

範例#1

一個簡單的程序,使用引用呼叫來檢查此函數的性質。在這裡,我們可以在使用引用呼叫並從函數內部修改變數後檢查實際值是否被修改。

代碼:

<?php function callByref(&$var)
{
$var.= ' This will be added to the function.';
}
$var = 'Value before calling the function.';
echo $var ."<br><br>"; // printing variable before callig function
callByref ($var);
echo $var;
?>

輸出:

PHP 透過引用調用

範例#2

範例程式碼區分 PHP 中的按值呼叫和按引用呼叫。

代碼

<?php // call by value function
echo "<br>Swap functionality by call be value:<br>";
function SwapCallByValue($a, $b){
$c=$a;
$a=$b;
$b=$c;
echo "";
echo "<br>Value of a and b after swap: ";
echo $a . " ".$b;
}
$a = 10;
$b = 20;
echo "Value of a and b before swap: ";
echo $a . " ".$b;
SwapCallByValue($a, $b);
// swap functionality by call be a reference
echo "<br><br>Swap functionality by call by reference:<br>";
function SwapCallByRefernce(&$a,&$b)
{
$c=$a;
$a=$b;
$b=$c;
}
$a = 10;
$b = 20;
echo "Value of a and b before swap: ";
echo $a . " ".$b;
SwapCallByRefernce($a, $b);
echo "<br>Value of a and b after swap: ";
echo $a . " ".$b;
?>

輸出:

PHP 透過引用調用

正如我們在上面的範例中看到的,如果我們在該函數外部列印 a 和 b 的值,則 call-by-swap 將不起作用。這是因為按值呼叫不會更改變數的實際副本。但在按引用呼叫中,我們可以看到在呼叫該函數後立即列印 a 和 b 的值,並且交換工作正常。這就是我們將處理按值呼叫和按引用呼叫的交換函數的全部內容。

範例 #3

代碼:

<?php // this is the main function inside which the a funtion will be passed as a parameter
function mainFunction(&$val)
{
$val++;
echo $val;
}
// this function will be used as a parameter
function &FunctionAsAParam()
{
$val = 15;
return $val;
}
echo "A value of a after calling the function: ";
$result = mainFunction(FunctionAsAParam()); // calling function, function as a reference parameter
?>

輸出:

PHP 透過引用調用

在上面的例子中,我們可以看到引用函數FunctionAsAParam()被用作另一個函數參數。根據其中編寫的程式碼,它分配主變數的值。函數mainFunction()是上面程式碼的主函數,是將使用FunctionAsAParam()作為參考函數參數後的值進行遞增。我們可以透過多種方式將該函數用作參考參數。

結論

透過引用呼叫在建立時使用參數中的 & 符號,而不是在呼叫函數時使用。在C或C++語言中,它通常在呼叫函數時使用,與PHP不同。 PHP 透過引用呼叫就是建立或呼叫一個修改變數實際副本的函數。所以PHP隨意呼叫時不需要引用符號就會報錯。

以上是PHP 透過引用調用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何修改PHP會話中存儲的數據?您如何修改PHP會話中存儲的數據?Apr 27, 2025 am 12:23 AM

tomodifyDataNaphPsession,startTheSessionWithSession_start(),然後使用$ _sessionToset,修改,orremovevariables.1)startThesession.2)setthesession.2)使用$ _session.3)setormodifysessessvariables.3)emovervariableswithunset()

舉一個在PHP會話中存儲數組的示例。舉一個在PHP會話中存儲數組的示例。Apr 27, 2025 am 12:20 AM

在PHP會話中可以存儲數組。 1.啟動會話,使用session_start()。 2.創建數組並存儲在$_SESSION中。 3.通過$_SESSION檢索數組。 4.優化會話數據以提升性能。

垃圾收集如何用於PHP會議?垃圾收集如何用於PHP會議?Apr 27, 2025 am 12:19 AM

PHP會話垃圾回收通過概率機制觸發,清理過期會話數據。 1)配置文件中設置觸發概率和會話生命週期;2)可使用cron任務優化高負載應用;3)需平衡垃圾回收頻率與性能,避免數據丟失。

如何在PHP中跟踪會話活動?如何在PHP中跟踪會話活動?Apr 27, 2025 am 12:10 AM

PHP中追踪用戶會話活動通過會話管理實現。 1)使用session_start()啟動會話。 2)通過$_SESSION數組存儲和訪問數據。 3)調用session_destroy()結束會話。會話追踪用於用戶行為分析、安全監控和性能優化。

如何使用數據庫存儲PHP會話數據?如何使用數據庫存儲PHP會話數據?Apr 27, 2025 am 12:02 AM

利用數據庫存儲PHP會話數據可以提高性能和可擴展性。 1)配置MySQL存儲會話數據:在php.ini或PHP代碼中設置會話處理器。 2)實現自定義會話處理器:定義open、close、read、write等函數與數據庫交互。 3)優化和最佳實踐:使用索引、緩存、數據壓縮和分佈式存儲來提升性能。

簡單地說明PHP會話的概念。簡單地說明PHP會話的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

您如何循環中存儲在PHP會話中的所有值?您如何循環中存儲在PHP會話中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

說明如何使用會話進行用戶身份驗證。說明如何使用會話進行用戶身份驗證。Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),