变量在函数内外的作用域 3
<?php function increment($value,$amount = 1) { $value = $value +$amount; } $value = 10; increment ($value); echo $value; ?>
输出的接入仍为10 ,这是因为作用域的原因,函数内部和函数外部的$value是不同的,且不能相互调用。
解决该问题的一个办法是将内部的$value定义为全局变量,但这意味者为了使用这个函数,要进行变量运算的变量需要被命名为$value.
更好的办法是使用引用传递,这里,在参数被传递给函数的时候,函数不会再创建一个新变量,而是函数获得一个原来变量的引用,这个引用有一个变量名称,它以美元符号开始,可以像梁一个变量那样使用他,其区别在于他不是获得变量本身的值,而是指向原来的值,任何对该引用的修改都会影响到原始变量值。
可以通过在函数定义的参数名前加一个地址符(&)来指定参数的引用传递,在函数调用处不用修改。
<?php function increment(&$value,$amount = 1) { $value = $value +$amount; } $value = 10; echo $value;echo '<br>'; increment ($value); echo $value; ?>
结果输出为:
10 11