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

时间:2014-01-04 02:40:35

标签: 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_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

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

3 个答案:

答案 0 :(得分:3)

只需省略默认值,它就是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),你知道这是第一次打电话......

答案 1 :(得分:2)

你可以做到

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>";
}

答案 2 :(得分:0)

在声明静态变量

后检查条件
static $i=0;
if(isset($i)){
 echo '$i is static and is set ';
}else{
$i=0;
}