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