美文网首页
PHP值传递与引用传递的区别

PHP值传递与引用传递的区别

作者: 周瑜君 | 来源:发表于2019-02-20 14:54 被阅读16次

    先敲两段代码然后就可以看出两者的区别,咱们透过现象看本质

    function sum($a){
      $a++;
      $b = $a;
      return $b;
    }
    $a = 10;
    echo sum($a).'<br />';//11
    echo $a;//10
    
    function sum(&$a){
      $a++;
      $b = $a;
      return $b;
    }
    $a = 10;
    echo sum($a).'<br />';//11
    echo $a;//11
    

    两段代码的差别在于函数sum的参数上,一个是传值$a,另一个是传引用&$a,其结果是传值过后$a的值最终没有发生改变,反之传引用过后$a的值发生了变化。这里学过C语言的童鞋就明白是怎么回事了,压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样,只是不用解引用) &是指向某个变量地址的符号,函数sum中的形参&$a实际上就是实参$a,那么将其传进sum中进行了一次++运算之后,实参$a的值实际上也就发生了改变,就是这么回事。

    相关文章

      网友评论

          本文标题:PHP值传递与引用传递的区别

          本文链接:https://www.haomeiwen.com/subject/sslhyqtx.html