Home  >  Article  >  Backend Development  >  How are PHP function parameters passed?

How are PHP function parameters passed?

WBOY
WBOYOriginal
2024-04-10 09:36:01923browse

There are two ways to pass PHP function parameters: Copy Pass: the default mechanism, the function receives a copy of the parameter value, and modifications do not affect the original variable. Reference Pass: The function receives a reference to the original variable, and modifications directly affect the original variable.

PHP 函数参数是如何传递的

PHP function parameter passing mechanism

In PHP, when passing parameters to a function, there are two passing mechanisms:

  • Copy Pass: The function receives a copy of the parameter value, and modifications to the copy will not affect the original variable. This is the default parameter passing mechanism in PHP.
  • Reference Pass: The function receives a reference to the original variable, and modifications to it will affect the original variable.

Copy Pass

Function parameters adopt the value-passing mechanism by default, that is, a copy of the parameter value is created inside the function. Any modifications to the copy only affect variables within the scope of the function, not the original variables outside the function.

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

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

Reference Pass

The reference pass mechanism can be implemented by adding the & symbol in front of the parameter. In this way, the internal operation of the function is no longer a copy of the value, but directly modifies the original variable.

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

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

Practical case:

A common example is the paging function of table data. We need to pass parameters such as the current page number and the number of records per page to the paging function. If the value-passing mechanism is used, the paging function can only operate on copies of parameters and cannot modify settings such as offsets and restrictions in database query statements. Therefore, in this case, the pass-by-reference mechanism should be used to ensure that the paging function can modify the original parameters.

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); // 传引用修改全局变量

The above is the detailed content of How are PHP function parameters passed?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn