function &aa(){
        echo "test";
}

解决方案 »

  1.   

    在PHPchina看过,当时没看懂解释
      

  2.   

    function $aa()
    {
    echo ..;
    }
    这样吧?这个很正常啊。。$aa被赋值了吧。。
      

  3.   

    PHP本身是个没有指针的语言,别搞这么用,没一点点意思,直接返回就好了
      

  4.   

    先阅读手册
    ==========
    从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & : 例子 17-13. 由函数返回一个引用<?php
    function &returns_reference()
    {
        return $someref;
    }$newref =& returns_reference();
    ?>  
     
    有关引用的更多信息, 请查看引用的解释。
    在来看一段很多开源代码喜欢用的单例注册模式class a{}
    class b{}
    function & aa($name)
    {
    static $class = array();
    if(!$class[$name])
    {
    $class[$name] = new $name();
    }
    return $class[$name];
    }
    $a = & aa('a');
    $b = & aa('b');$a2 = & aa('a');
    $b2 = & aa('b');echo $a === $a2 ? '$a和$a2是同一个实例化对象<br/>' : '';
    echo $b === $b2 ? '$b和$b2是同一个实例化对象' : '';
      

  5.   

    谷歌了一下:
    函数的引用
    对于函数的引用,主要区别在于内存性能~
    function &load_message  和 function load_message,第一个在使用的时候也要用 &load_message声明为一个引用返回,而第二个只是将函数的结果赋值到一个变量中,该函数一般用于递归作用。至于引用,还是建议你自己写几个例子,测试一下。就明白了,只看字面意思总归不如实践的好,同时网上有很多关于php 引用的例子。可以参照一下。
      

  6.   

    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
    $a=5;
    $a=test();//这条语句会输出 $b的值 为6
    下面解释下: 
    通过这种方式$a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别.
    至于原因: 这是PHP的规定
    PHP规定通过$a=&test(); 方式得到的才是函数的引用返回.
    至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。) 用上面的例子来解释就是
    $a=test()方式调用函数,只是将函数的值赋给$a而已, 而$a做任何改变 都不会影响到函数中的$b.
    而通过$a=&test()方式调用函数呢, 他的作用是将return $b中的 $b变量的内存地址与$a变量的内存地址,
    指向了同一个地方.
    即产生了相当于这样的效果($a=&b;) 所以改变$a的值,也同时改变了$b的值,所以在执行了:
    $a=&test();
    $a=5;
    以后,$b的值变为了5
      

  7.   

    C或C++中用指针引用之说,但PHP中没有。所以有没有&号其结果是完全一样的,所以在PHP中没必要这么写。当然,如果想了解具体的意义所在,我建议去看有指针的语言会比较容易理解,比如经典的C或C++或是Java(Java没学过我不确认)