引用符号就是“&”,没见过?function & kao() {}

解决方案 »

  1.   

    看看这个例子就明白了
    <?php
    function &foo() {
      static $v = 0;
      $v++;
      echo $v.'<br>';
      return $v;
    }
    foo();
    $b =& foo();
    $b += 10;
    foo();
    ?>
    输出
    1
    2
    13而
    <?php
    function &foo() {
      static $v = 0;
      $v++;
      echo $v.'<br>';
      return $v;
    }
    foo();
    $b = foo();
    $b += 10;
    foo();
    ?>

    <?php
    function foo() {
      static $v = 0;
      $v++;
      echo $v.'<br>';
      return $v;
    }
    foo();
    $b =& foo();
    $b += 10;
    foo();
    ?>
    都只输出
    1
    2
    3
      

  2.   

    引用在PHP里就是别名,
    function &A() 
    {
       return $a;// 函数返回$a的引用,$a在内存中不会消失
    }
    function A()
    {
       return $a;// 函数返回$a的值,$a会在内存消失,会复制一个$a作为返回值,所以对于大结构、对象就会影响效率
    }$b = &$a;
    $c = &$a;  // $b,$c只是$a的别名,不占空间,占空间的只有$a$b = $a;
    $c = $a;  // $a, $b, $c 都占空间, 不过经过Zend优化,内部也会用引用实现以提高效率
      

  3.   

    剛才發現手冊上一個錯誤,大家討論,以下是手冊上的內容.需要注意的是只有命名变量才可以传地址赋值,这一点非常重要。 <?php
    $foo = 25;
    $bar = &$foo;      // This is a valid assignment.
    $bar = &(24 * 7);  // Invalid; references an unnamed expression.function test()
    {
       return 25;
    }$bar = &test();    // Invalid.
    ?>  $bra = &test();應該是valid.我做過測試.