我想检查先前是否已声明/初始化静态变量,例如如果第一次运行带有静态变量的函数。请参阅以下示例代码:
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
是否已设置?
答案 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;
}