php 引用
在PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。在 PHP 中引用意味着用不同的名字访问同一个变量内容。
例子1:
$a = "dfgh";
$b =& $a;
echo $b.$a;
这意味着 $a 和 $b 指向了同一个变量。同一个变量内容有不同的变量名
函数的引用传递(传址调用):
function test(&$a)
{ $a = $a+100;
}
$b = 1;
test($b);
echo $b; //101
函数 test() 直接拿变量的地址作为参数……然后将变量的值+100. test($b) 这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值就可以改变$b的值了。
看下面的例子
$a = 111;
$b = 222;
function cz(& $a,$b){
$a += $b;
$b += 4;
}
cz($a,$b);
echo '$a='.$a;
echo '$b='.$b;
这段代码,首先在函数cz外定义了两个变量$a和$b,然后在函数cz内,对两个变量进行了相应的操作,再调用函数cz,最后将$a和$b输入。我们都知道函数的作用域问题,在函数内部修改的值,只能在函数内部反应出来,在函数外是不能得不到这种变化的。现在我们看下这个这段代码输出的结果
$a=333;
$b=222;
$b的值和预期的相同,输出的是222,但是$a的值却发生了变化,这是因为在函数的参数前多了一个“&”的原因,正是因为这个符号,所以让$a能够得到在函数cz内的变化,所以$a的值才会发生改变。所以按值传递和按引用传递的区别就在这里了,如果想将一个变量在函数内修改的值作用到函数外的变量上时,只需要在相应的参数前面加上“&”就可以了。