zoukankan      html  css  js  c++  java
  • php的引用(就是在变量或者函数、对象等前面加上&符号)

    1.变量的引用
    
    PHP 的引用允许你用两个变量来指向同一个内容(即指向同一个内存地址)
    
    复制代码
    <?php
        $a="ABC";
        $b =&$a;
        echo $a;//这里输出:ABC
        echo $b;//这里输出:ABC
        $b="EFG";
        echo $a;//这里$a的值变为EFG 所以输出EFG
        echo $b;//这里输出EFG
    ?>
    2.函数参数的引用传递(传址调用)
    
    传址调用我就不多说了 下面直接给出代码
    
    <?php
    
        function test(&$a){
            $a=$a+100;
        }
        $b=1;
        echo $b;//输出1
    
        test($b);   //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了,相当于,$a = &$b;
    
        echo "<br>";
        echo $b;//输出101
    ?>
    要注意的是,在这里test(1);的话就会出错,只有变量,函数或者对象可以进行引用传入。
    3.函数的引用返回 
    
    <?php
    function &test(){
        static $b=0;//申明一个静态变量
        $b=$b+1;
        echo $b;
        return $b;
    }
    
    $a=test();//这条语句会输出 $b的值 为1
    $a=5;
    $a=test();//这条语句会输出 $b的值 为2
    //以上跟正常函数调用一样,要用到函数的引用返回调用函数时才使用引用才有效果,所以原函数的&符号可以去掉,调用时使用&才有效
    $a=&test();//这条语句会输出 $b的值 为3,&test()相当于将test()函数的返回值内存地址与$a内存地址指向同一个,改变返回值或者改变$a,两者都会改变
    $a=5;
    $a=test();//这条语句会输出 $b的值 为6
    ?>
    踩过这个坑,还有下一个坑等着你,这一路就是给自己填坑,坑填多了,也就习惯了,直到这一路平坦了,也就无怨无悔了。
  • 相关阅读:
    Palindrome Partitioning
    Minimum Path Sum
    Maximum Depth of Binary Tree
    Minimum Depth of Binary Tree
    Unique Binary Search Trees II
    Unique Binary Search Trees
    Merge Intervals
    Merge Sorted Array
    Unique Paths II
    C++ Primer Plus 笔记第九章
  • 原文地址:https://www.cnblogs.com/xiaofeilin/p/14366283.html
Copyright © 2011-2022 走看看