static $ary = array();
$ary[] = 'a';
print_r($ary);die();
static $ary = array('aaa', 'bbb');
$ary[] = 'a';
print_r($ary);为何这段代码输出的结果是
Array ( [0] => aaa [1] => bbb [2] => a )难道static的会先执行?不会吧?!

解决方案 »

  1.   

    是的,可以这么认为
    static 被 php 解释成了一个内部函数,并先于 php 程序执行
    所以静态变量可以有初值,但初值不能包含变量换一种说法可能容易理解些:
    静态变量在程序开始时就已经赋值了
      

  2.   

    static跑的快,两只耳朵真奇怪,这句话没听过?
      

  3.   

    function a ($abc){
    static $ary = array();
    $ary[] = $abc;
    print_r($ary);
    }
    for($i=0; $i<10; $i++){
    a($i);
    }那这段代码,如果static放在function里面,他又是怎么调用的,是不是如果$ary不存在则创建,如果存在则不创建?