PHP 函數參數是如何傳遞的

WBOY
發布: 2024-04-10 09:36:01
原創
965 人瀏覽過

PHP函數參數傳遞有兩種方式:傳值(Copy Pass):預設機制,函數收到參數值的副本,修改不影響原變數。傳引用(Reference Pass):函數收到原變數的引用,修改直接影響原變數。

PHP 函数参数是如何传递的

PHP 函數參數傳遞機制

在PHP 中,傳遞參數參數時,有兩種傳遞機制:

  • 傳值(Copy Pass):函數收到的是參數值的副本,對此副本的修改不會影響原變數。這是 PHP 中預設的參數傳遞機制。
  • 傳引用(Reference Pass):函數收到的是對原始變數的引用,對其修改會影響原始變數。

傳值(Copy Pass)

函數參數預設採用傳值機制,即在函數內部建立參數值的副本。對副本的任何修改都只影響函數作用域內的變量,而不會影響函數外部的原變量。

function add($a, $b) {
  $a = $a + $b; // 只修改函数内部的 $a 副本
}

$x = 1;
$y = 2;
add($x, $y); // 传值到函数
echo $x; // 仍为 1,未受函数内更改的影响
登入後複製

傳引用(Reference Pass)

透過在參數前面加上 & 符號,可以實現傳引用機制。這樣函數內部運算的不再是值的副本,而是直接對原變數進行修改。

function add_ref(&$a, &$b) {
  $a = $a + $b; // 直接修改原变量
}

$x = 1;
$y = 2;
add_ref($x, $y); // 传引用到函数
echo $x; // 现在为 3,因函数内修改了原变量
登入後複製

實戰案例:

一個常見的例子是表格資料的分頁功能。我們需要向分頁函數傳遞目前頁碼和每頁記錄數等參數。如果採用傳值機制,那麼分頁函數只能操作參數的副本,無法修改資料庫查詢語句中偏移量和限制條件等設定。因此,在這種情況下,應使用傳引用機制,以確保分頁函數能夠修改原始參數。

function paginate($page_num, $per_page) {
  global $offset, $limit; // 全局变量
  $offset = ($page_num - 1) * $per_page;
  $limit = $per_page;
}

// ... 获取 $page_num 和 $per_page 的值 ...
paginate($page_num, $per_page); // 传引用修改全局变量
登入後複製

以上是PHP 函數參數是如何傳遞的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板