<?php
                function A(  ){
STATIC $a=10;
$a+=10;
echo $a;
}
A(  );            // 20
A(  );             //20
?>
=====================================================================<?php
                function A(  ){
STATIC $a 
                        $a=10;
$a+=10;
echo $a;

A(  );      //20
A(  );          //30
?>

解决方案 »

  1.   

    运行了一下,楼主你恐怕把结果贴反了。如果是的话也就很容易明白
    STATIC $a;
    $a=10; // 每次调用开始都只能是10了
      

  2.   

    前面发错了,是下面这样,做何解释:<?php
      function A( ){
    STATIC $a=10;
    $a+=10;
    echo $a;
    }
    A( ); // 20
    A( ); //30
    ?>
    =====================================================================<?php
      function A( ){
      STATIC $a;
      $a=10;
    $a+=10;
    echo $a;
    }  
    A( ); //20
    A( ); //20
    ?>
      

  3.   

      function A( ){
      STATIC $a;  
    ----------------(1)
      $a=10;
    $a+=10;
    echo $a;
    }   
    ================
    第二次调用的时候,直到(1)处,局部静态变量$a的确是20,但是你随后又给$a赋值10,所以函数最后结果会一直输出20
      

  4.   

    那为何
      function A( ){
    STATIC $a=10;
    这样的写法 不会覆盖。。
      

  5.   

    对。那样写不会覆盖。这个你就要去看看静态变量static的用法了。
    function A( ){
      STATIC $a;  //其实static在此没用
      $a=10; //每次调用都会覆盖。
      echo '<br>';
      echo $a; //每次调用都是10
      echo '<br>';
    $a+=10;
    echo $a;
    }  
    A(); 
    A(); 
    输出10
    20
    10
    20