【问题标题】:Why is the second static variable assignment takes effect not the first one?为什么第二个静态变量赋值不是第一个生效?
【发布时间】:2013-07-05 02:38:48
【问题描述】:
function track_times() {
static $i = 0;
$i++;
static $i = 5;
return $i;
}

echo track_times() . "\n";
echo track_times() . "\n";

结果是:

6
7

我知道人们不会以这种方式使用static 变量,只是无法解释结果。结果暗示第二次赋值生效,但$i在赋值前自增,为什么第一次调用函数返回6?

【问题讨论】:

  • 但是为什么要写这个模式呢?听起来不合逻辑。

标签: php static static-variables


【解决方案1】:

静态声明在编译时解析。您在运行时递增它。因此,在它已经被声明为 5 之后,您要对其进行递增。另请参阅 http://www.php.net/manual/en/language.variables.scope.php

【讨论】:

  • 如果我在第一个作业中删除static,结果将是'5, 5',那么它有什么不同呢?
猜你喜欢
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2020-01-19
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
相关资源
最近更新 更多