函数前加 & 表示该函数返回的是引用

解决方案 »

  1.   

    引用做什么
    PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时: 
    <?php
    $a =& $b
    ?>  
    这意味着 $a 和 $b 指向了同一个变量。 
    注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。 
    同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中(PHP 4.0.4 以及以后版本): 
    <?php
    $bar =& new fooclass();
    $foo =& find_var ($bar);
    ?>  注: 不用 & 运算符导致对象生成了一个拷贝。如果你在类中用 $this,它将作用于该类当前的实例。没有用 & 的赋值将拷贝这个实例(例如对象)并且 $this 将作用于这个拷贝上,这并不总是想要的结果。由于性能和内存消耗的问题,通常你只想工作在一个实例上面。 尽管你可以用 @ 运算符来关闭构造函数中的任何错误信息,例如用 @new,但用 &new 语句时这不起效果。这是 Zend 引擎的一个限制并且会导致一个解析错误。 引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量并且该变量在呼叫范围内引用了同一个内容来实现的。例如: 
    <?php
    function foo (&$var)
    {
        $var++;
    }$a=5;
    foo ($a);
    ?>  
    将使 $a 变成 6。这是因为在 foo 函数中变量 $var 指向了和 $a 指向的同一个内容。更多详细解释见引用传递。 引用做的第三件事是引用返回。 
      

  2.   

    嗯。楼上们一说我想起来了,&是指向内存地址的。但是想不到php也这样用。呵呵。楼上的楼上那个例子让我明白了,$a的值的确会变。但是想不明为什么在类里面放在成员函数前面有什么用。
    看来还需要详细了解类。呵呵。
      

  3.   

    http://www.phpe.net/articles/389.shtml
    中的中间的getposition函数,就是用了引用。
      

  4.   

    在一个对象的方法中,$this 永远是调用它的对象的引用
      

  5.   

    给你一个例子你应该就可以明白了
    <?php
    function myfunc2(&$argstr) {
      $argstr=ereg_replace("/", "-", $argstr);
    }$today="2000/01/01";
    myfunc2($today);
    echo $today;   // 2000-01-01;
    ?>