PHP函数按引用传递的例子
首先让我们来看一段代码如下:
-
<?php
-
$cost = 20.99 ;
-
$tax = 0.75 ;
-
function calculateCost ( & $cost , $tax ){
-
$cost = $cost + ( $cost * $tax ) ;
-
$tax += 4 ;
-
}
-
calculateCost ( $cost , $tax ) ;
-
printf ( "Tax is:%1.2f<br />" , $tax ) ;
-
printf ( "Cost is:%1.2f" , $cost ) ;
-
?>
这段代码首先在函数calculateCost的外部定义了两个变量:$cost和$tax,然后在函数内部对这个变量值进行了相应的修改:
$cost=$cost+($cost*$tax); $tax+=4;接下来就是调用了函数calculateCost($cost,$tax);其printf(”Tax is:%1.2f
“,$tax);格式化输出了函数的值,保留两位小数.我们知道函数的作用域的问题,在函数内部修改的值只会在函数内部反应出来,也就是在{}内反应,对于函数外部的变量它是"感受"不到这种变化的存在的.那么让我看下输出:
Tax is:0.75
Cost is:36.73
正如我们所预想的那样,对于变量tax其值还是原来的值,但变量cost却出乎意料的"感受"到了变化.这是因为在函数的参数前面有"&"符号,正是这个符号的存在使得它能够"感受"到内部函数对它的修改.所以按值和按引用的差别也就是在这里了.如果你想让函数内部的值的修改同时也能够反应到函数外部,你只要在对应的参数前面加上"&"就OK了.
原文链接:PHP函数按引用传递的例子