不用 静态参数的方法到是可以解决. 
不过问题依旧 --如何释放函数中静态变量
<?php
  function ar_list($ar,$ke,$i){
     if(is_array($ar)){
        foreach($ar as $key=>$value){
           ar_list($value,$key,$i++);
        }
     }else{
        echo "(".$i.")".$ke."=>".$ar."<br>";
         $i++;
     }
  }
  ar_list($_SERVER,"tao","0");
?>

解决方案 »

  1.   

    function ar_list($ar,$ke){
         static $i;
         if(empty($ke)) $i = 1;
         if(is_array($ar)){
            foreach($ar as $key=>$value){
               ar_list($value,$key);
            }
         }else{
            echo "(".$i.")".$ke."=>".$ar."<br>";
             $i++;
         }
    }
    ar_list($_SERVER,"");
    ar_list($_SERVER,"");
      

  2.   

    那 static $i 是怎么释放的??
    function 里static 的作用域,到底是??
      

  3.   

    我在最后用
    echo $i;并没有获取数据.
    可是怎么,用开始的那中方法.function 竟然可以获取数据???
      

  4.   

    如果只在函数里,那还static干嘛?
      

  5.   

    <?php
      function ar_list($ar,$ke,$level=0){
         if(is_array($ar)){
            foreach($ar as $key=>$value){
               ar_list($value,$key,$level+1);
            }
         }else{
            echo "(".$level.")".$ke."=>".$ar."<br>";
         }
      }
      ar_list($_SERVER,"");
      ar_list($_SERVER,"");
    ?????
      

  6.   

    to:zairwolfi(君子兰
    用递归时,保证$i数据一直存在,可用