专注于WEB技术的IT博客

php函数的传值与传址

时间:2012-12-26分类: php浏览:7823
分享到:

php函数的传值与传址有什么区别呢?对于这样的问题我喜欢通过程序演示来获取答案。让我们来看一个演示记录吧!

<?php    
        
$i=100;    
        
function func($n){    
        
   $n=$n+100;    
           
   return $n;    
           
}    
echo '1)函数传值前变量$i的值:'.$i.'<br>';    
echo '2)传值后函数的返回值:'.func($i).'<br>';    
echo '3)函数传值后变量$i的值:'.$i.'<br>';    
echo '4)函数传址前变量$i的值:'.$i.'<br>';    
echo '5)传址后函数的返回值:'.func(&$i).'<br>';    
echo '6)函数传址后变量$i的值:'.$i.'<br>';    
//echo func($i).'<br>';    
?>

    程序输出:
    1)函数传值前变量$i的值:100
    2)传值后函数的返回值:200
    3)函数传值后变量$i的值:100
    4)函数传址前变量$i的值:100
    5)传址后函数的返回值:200
    6)函数传址后变量$i的值:200
    
    解释:
    1)直接输出一个赋值$i=100的变量
    2)func函数传值返回一个算术相加的结果$=100+100
    3)func函数传值,其作用区域只限于函数内部,对外面的变量$i不会有影响
    4)同上
    5)func函数参数前多了个"&"符,表示传址,和2)一样,返回值是函数的算术运行结果。

    6)func(&$i),变量指针指向$i的位置,可以理解为是对变量$i的操作,$i=$i+100;这时变量$i已经相当于重新被赋值

    如果去掉上面代码的第18行注释,会得什么结果呢?
    小结:传址为了在执行函数的同时,同时改变函数参数值,而传值不期望改变。

          

猜你喜欢
php面向对象之__autoload()
php面向对象之__call处理错误调用
php面向对象之__toString()
PHP面向对象之const常量修饰符
php面向对象之final的应用
php面向对象之克隆对象
PHP面向对象之对象和引用
php面向对象之类的静态成员
php面向对象之子类中重载父类的方法
php面向对象的访问类型控制
标签 : php
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/63.html,谢谢。
  • 评论
  • 赞助本站