php中的引用

  1. $var1 = 'zhuchunyu';
    $var2 = "";
    
    function foo($vaa){
        global $var1,$var2;
        if (!$vaa){
            $var2 = & $var1;
        } else{
            $GLOBALS["var2"] = & $var1;
        }
    }
    
    foo(false);
    print "var2------->".$var2."\n";     // $var2是空字符串
    foo(true);
    print "var2------->".$var2."\n";     // $var2是zhuchunyu
    
    // 解析打印效果
  2. function &foo(){
        static $b=0; // 申明一个静态变量
        $b = $b +1;
        echo $b;
        return $b;
    }
    
    $a = foo();   
    $a = 5;  
    $a = foo();  
    $a = &foo();
    $a = 5;
    $a = foo();
    
    // 解释下 $a = foo() , $a = $foo()
    对于上面的foo函数中的static,指定一个静态变量,当执行一次函数,static设置的变量,是不会消失的。
    $a = foo()      它是将函数的返回值的值赋值给$a,
    $a = $foo()     它是将函数的返回值的内存地址赋值给$a,一旦$a改变了值,那么函数的返回值也会改变,foo函数的返回值就是static静态变量,所以函数的返回值改变,这个静态变量也会改变。
    
    // 打印效果1236
    
  3. $a = 1;
    $b = &$a;
    unset($a);
    print $b;   // 输出1
    
    // 解析下
    unset删除一个变量,它只是删除了变量与值的内存地址之间的关系,不会删掉值,所以你虽然删除了$a,但是值没有删掉,所以$b对应的值还是1。
上一篇:【Java】【JVM】经典面试题:Java字符串变量相等问题


下一篇:shell问题汇总