变量在函数内外的作用域 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

 

posted @ 2015-01-14 13:55  todaytoday  阅读(177)  评论(0编辑  收藏  举报