Php 函数中的静态变量

Php 函数中的静态变量,php,Php,我在电视上看到的 <?php function myTest() { static $x = 0; echo $x; $x++; } myTest(); myTest(); myTest(); ?> 输出为0、1和2。 我想知道为什么它不是0,0和0。 因为每次调用该函数时,变量x都再次变为0 我是一个PHP初学者。谢谢 如果在函数中声明一个var static,那么该var会在多次调用中保持它的值。您可以将其与类内部的静态变量进行比较 您发布的代码是一个

我在电视上看到的

<?php
  function myTest() {
  static $x = 0;
  echo $x;
  $x++;
  }

myTest();
myTest();
myTest();
?>

输出为0、1和2。 我想知道为什么它不是0,0和0。 因为每次调用该函数时,变量x都再次变为0


我是一个PHP初学者。谢谢

如果在函数中声明一个var static,那么该var会在多次调用中保持它的值。您可以将其与类内部的静态变量进行比较

您发布的代码是一个很好的示例,可以看到实际效果。然而,我只会小心地使用静态内部函数,因为大多数情况下,您需要在其他地方使用静态值,重置值,或者其他需要大量逻辑并使代码非常糟糕的东西

一个很好的例子是函数,它返回给定标识符的唯一标识符。这可以通过使用此代码简单地实现

function unique_id($id) {
    static $count = 0;
    return $id . ($id++);
}

这个例子可以澄清这一点静态有一个范围,因此不是全局变量。因此,我可以在函数外部定义静态$x,它将在那里定义。因为static有作用域,所以继续执行和重置$x=0没有任何意义。因此,php只会在第一次调用该行时确认它

<?php
static $x = 1000;

  function myTest() {
      static $x = 0;
      echo $x;
      $x++;
  }

myTest();
myTest();
myTest();
?>


因为每次调用函数时都会将$x重置为零(0)。是的,但为什么输出为0、1、2?
静态
仅在首次调用函数时声明。在随后的每次通话中都会记住它。这就是
static
在函数范围内的工作方式。这基本上是为了提醒我们PHP源于C