Php 有人能帮我清除静态变量吗?
在这里使用PHP,我决定一章一章地阅读手册,学习新知识。现在我发现了静态变量,这似乎是一个很棒的概念,但我对它的理解是: 静态变量在每次加载脚本时只设置一次。它们可以更改和递增,但实际上不能重新设置。通常在函数中用于设置值,而不必在每次函数运行时初始化该变量Php 有人能帮我清除静态变量吗?,php,variables,static,Php,Variables,Static,在这里使用PHP,我决定一章一章地阅读手册,学习新知识。现在我发现了静态变量,这似乎是一个很棒的概念,但我对它的理解是: 静态变量在每次加载脚本时只设置一次。它们可以更改和递增,但实际上不能重新设置。通常在函数中用于设置值,而不必在每次函数运行时初始化该变量 <?php function count2( $inputNum ) { static $a = $inputNum; echo $a++; //Echo and then increment. } for ( $
<?php
function count2( $inputNum ) {
static $a = $inputNum;
echo $a++; //Echo and then increment.
}
for ( $i = 0; $i < 10; $i++ ) {
count2(50);
}
?>
我希望这将在50开始静态$a
var,并增加11倍。我怎么会出错
与任何其他PHP静态变量一样,只能使用文本或常量初始化静态属性;不允许使用表达式。
因此,虽然可以将静态属性初始化为整数或数组
(例如),您不能将其初始化为另一个变量,即
函数返回值,或返回到对象
我想你错过了(强调我的):)
与任何其他PHP静态变量一样,只能使用文本或常量初始化静态属性;不允许使用表达式。
因此,虽然可以将静态属性初始化为整数或数组
(例如),您不能将其初始化为另一个变量,即
函数返回值,或返回到对象
我想你错过了(强调我的):静态变量不能用另一个变量初始化,它的值直到运行时才知道。必须使用编译时已知的值初始化它
function count2($inputNum) {
// Initialize only once to an integer (non variable, non-expression)
static $a = 0;
if ($a === 0) {
// If $a is still 0, set it to $inputNum
$a = $inputNum;
}
echo $a++;
}
// First run outputs 25
count2(25);
// 25
// Subsequent runs increment
count2(25);
// 26
count2(25);
// 27
静态变量不能用另一个变量初始化,该变量的值在运行时之前是未知的。必须使用编译时已知的值初始化它
function count2($inputNum) {
// Initialize only once to an integer (non variable, non-expression)
static $a = 0;
if ($a === 0) {
// If $a is still 0, set it to $inputNum
$a = $inputNum;
}
echo $a++;
}
// First run outputs 25
count2(25);
// 25
// Subsequent runs increment
count2(25);
// 26
count2(25);
// 27
一些即时的问题:
- 只能声明一次静态变量。通过调用
10次,您的语法会一次又一次地对其进行重击count2()
- 您不能使用
运算符,因为您不能更改静态变量++
- 不使用定义和
<?php
error_reporting(E_ALL);
/* setup */
function set( $input ) {
define( 'A', $input );
}
function tick() {
echo constant( 'A' ) . "\n";
}
/* run */
set( 50 );
for($i=0; $i<10; $i++){
tick();
}
?>
一些即时的问题:
- 只能声明一次静态变量。通过调用
10次,您的语法会一次又一次地对其进行重击count2()
- 您不能使用
运算符,因为您不能更改静态变量++
- 不使用定义和
<?php
error_reporting(E_ALL);
/* setup */
function set( $input ) {
define( 'A', $input );
}
function tick() {
echo constant( 'A' ) . "\n";
}
/* run */
set( 50 );
for($i=0; $i<10; $i++){
tick();
}
?>
在这个例子中,我是根据他们所做的文档(增量)得出的。如果我用numberHmmm初始化静态var,它也可以工作,我测试过,这可以工作:
$php-r'static$a=3$a++;回声$a;'代码>在这个例子中,我是根据他们所做的文档(增量)得出的。如果我用numberHmmm初始化静态var,它也可以工作,我测试过,这可以工作:$php-r'static$a=3$a++;回声$a;'嘿,谢谢,让我看看我是否做对了。您将static设置为一个伪值(0),只是为了告诉它是静态的,然后当您将其更改为参数时,它仍然保持静态,因此不会重新初始化自身?@user1159454是的,它保持它,下次调用函数时,该行将static$a=0
不会使用effect@user1159454是的,没错。静态
初始化只会发生一次,函数将在后续调用中保留该值。$a++
会增加它(返回并回显后)。嘿,谢谢,让我看看我是否做对了。您将static设置为一个伪值(0),只是为了告诉它是静态的,然后当您将其更改为参数时,它仍然保持静态,因此不会重新初始化自身?@user1159454是的,它保持它,下次调用函数时,该行将static$a=0
不会使用effect@user1159454是的,没错。静态
初始化只会发生一次,函数将在后续调用中保留该值。$a++
增加了它(返回并回显后)。啊,是的,我确实错过了。那本手册对我来说很难,它一直在谈论它可能期望我已经知道的概念,然后在3页之后介绍这个概念..谢谢!啊,是的,我确实错过了。那本手册对我来说很难,它一直在谈论它可能期望我已经知道的概念,然后在3页之后介绍这个概念..谢谢!