PHP中的静态范围变量的未定义变量

时间:2012-10-28 07:30:59

标签: php

在PHP中使用'static'时遇到问题。这是我的代码:

static $a = 12;
if(0) {
static $b = 11;
static $a = 11111;
}
echo $a.'----------'.$b;

为什么输出是“11111 ----------”并得到“通知:未定义的变量:b”

2 个答案:

答案 0 :(得分:2)

它必须是范围问题,但我不确定为什么因为它不在函数中。不管怎样,我得到了这样的工作:

static $a = 12;
static $b; // <-- notice this
if (0) {
    static $b = 11;
    static $a = 11111;
}
echo $a.'----------'.$b;

答案 1 :(得分:0)

作为问题的解决方案,请参阅以下代码段

 <?php 
     static $a = 12;
     static $b ;
     if(0) {
       static $b = 11;
       static $a = 11111;
      }

     echo $a.'----------'.$b;
    ?>

在上面的代码片段中,变量$ b在if块中定义。条件或循环块中定义的变量只能在该块中访问。因此需要全局声明。然后只能在全局范围内访问它