PHP检查静态变量是否已声明或初始化?

PHP检查静态变量是否已声明或初始化?,php,Php,我想检查之前是否声明/初始化了静态变量,例如,是否第一次运行带有静态变量的函数。请参见以下示例代码: function init_i (){ // check if $i is set?? if(isset($i)) echo '$i is static and is set '; static $i=0; $i++; echo "$i<br>"; } function run_init(){ init_i(); } run_i

我想检查之前是否声明/初始化了静态变量,例如,是否第一次运行带有静态变量的函数。请参见以下示例代码:

function init_i (){
    // check if $i is set??
    if(isset($i)) echo '$i is static and is set ';


    static $i=0;
    $i++;
    echo "$i<br>";
}

function run_init(){
    init_i();
}

run_init(); //output 1
run_init(); //should output $i is static and is set 2
run_init(); //should output $i is static and is set 3
run_init(); //should output $i is static and is set 4
run_init(); //should output $i is static and is set 5
函数初始化i(){
//检查是否设置了$i??
如果(isset($i))echo“$i是静态的且已设置”;
静态$i=0;
$i++;
回声“$i
”; } 函数run_init(){ init_i(); } 运行_init()//产出1 运行_init()//输出$i应为静态且设置为2 运行_init()//输出$i应为静态且设置为3 运行_init()//输出$i应该是静态的,并且设置为4 运行_init()//输出$i应为静态且设置为5

问题是,即使isset($i)是一个静态变量,它似乎永远不会被证明是真的。如何检查已设置的
静态$I

在声明静态变量后检查条件

static $i=0;
if(isset($i)){
 echo '$i is static and is set ';
}else{
$i=0;
}
你能行

function init_i (){
    static $i=0;

    // check if $i is set??
    if ( $i != 0 )
         echo '$i is static and is set ';
    $i++;
    echo "$i<br>";
}
函数初始化i(){
静态$i=0;
//检查是否设置了$i??
如果($i!=0)
echo“$i为静态且已设置”;
$i++;
回声“$i
”; }
只需省略默认值,它将为
null

static $i;

// check if $i is set??
if(isset($i)){
  echo '$i is static and is set ';
}else{
  // first call, initialize...
  $i = 0;
}

...
isset()
如果变量设置为
null
,则返回TRUE


我不明白你的理由是什么,因为你可以只检查值是初始值(
0
),你知道这是第一次调用…

关键是要知道函数是否在之前运行过或是第一次运行过。如果在循环中使用,我希望函数的行为有所不同。我并没有考虑在声明过程中分离变量赋值。@用户听起来是个坏主意。函数在循环中或其他地方的行为不应不同。研究“幂等性”。但是当函数第一次运行时,if语句将被证明是正确的。我想在第二次和以后证明它是真的。是的,在其他条件下检查它,哦,你是对的。我有两个回音“我是静态的,是设置的”行在那里给我错误的结果。我将从我的答案中删除第二个函数