我想检查之前是否声明/初始化了静态变量,例如,是否第一次运行具有静态变量的函数。请参阅以下示例代码:
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
Run Code Online (Sandbox Code Playgroud)
问题是 isset($i) 似乎永远不会被证明是正确的,即使它是一个静态变量。如何检查是否static $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;
}
...
Run Code Online (Sandbox Code Playgroud)
isset()如果变量已设置但未设置,则返回 TRUE null。
我不明白你这背后的原因是什么,因为你可以检查该值是初始值(0),并且你知道这是第一个调用......
| 归档时间: |
|
| 查看次数: |
4126 次 |
| 最近记录: |