引用参数的函数
引用参数的函数格式说明:
void funName(array &args)
相对于按值传递模式,并不会将父程序中的指定数值或目标变量传递给函数,而是把该数值或变量的内存储存区块相对地址导入函数之中。因此当该数值在函数中有任何变动时,会连带对父程序造成影响。
注意:如果在函数的形参中使用“&“修饰的参数,在调用该函数时必须传入一个变量给这个参数,而是不能传递一个值。
<?php
//使用常规参数传值
function test($arg) {
$arg = 200; //在函数中改变参数$a的值为200
}
$var = 100; //在父程序中声明一个全局变量$var,初值为100
test($var); //调用test函数,并将变量$var的值100传给函数的参数$arg
echo $var; //输出100。$var的值没有变化
//使用“&”引用参数传值
function test( &$arg ) {
$arg = 200; //改变参数$a的值为200,$arg是引用参数,外部变量$var也被修改
}
$var = 100; //在父程序中声明一个全局变量$var,初值为100
test($var); //调用test函数,并将变量$var的引用传给函数的参数$arg
echo $var; //输出200。$var的值在函数中修改变量$arg时被修改
例test.php
<?php
/*
* $a = 10;
*
* $b = &$a;
*
* $a = 400;
* $b = 800;
*
* 1. 只有在内存中的变量, 才有地址
* 2. 有引用关系的两个变量, 一个变, 另一个就变, 相当于两个是一个
*
*
* 如果在函数说明中, 有&出现, 说明这个参数是一个引用参数, 你调用时传参数时, 就必须传一个变量
*
*/
$a= 20;
function demo(&$a) {
$a = 100;
}
echo $a."<br>";
demo($a);
echo $a."<br>";