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语句将被证明是正确的。我想在第二次和以后证明它是真的。是的,在其他条件下检查它,哦,你是对的。我有两个回音“我是静态的,是设置的”行在那里给我错误的结果。我将从我的答案中删除第二个函数