在php中,如何确保函数中声明的静态变量不会在调用函数时重新启动?

在php中,如何确保函数中声明的静态变量不会在调用函数时重新启动?,php,static,Php,Static,似乎函数中声明的静态变量在调用函数时会被重新启动,我如何才能以重新调用函数将重新使用静态参数的方式使用函数 我在static.php中定义了函数“testStatic” 下面是static.php: <?php function testStatic() { static $staticV = 0; echo $staticV; $staticV; } ?> 我从index.php调用“testStatic” 下面是index.php: <?php

似乎函数中声明的静态变量在调用函数时会被重新启动,我如何才能以重新调用函数将重新使用静态参数的方式使用函数

我在static.php中定义了函数“testStatic”

下面是static.php:

<?php
function testStatic()
{
    static $staticV = 0;
    echo $staticV;
    $staticV;
}
?>

我从index.php调用“testStatic”

下面是index.php:

<?php include "./static.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3c.org/TR/html4/strict.dtd">
<?php
testStatic();
?>

<html> 
.
.
.
<html>

.
.
.
第一次执行index.php时,testStatic将使用“0”进行回显,但在下一次执行index.php时,testStatic将继续使用“0”进行回显。 无论何时执行index.php,“testStatic”的静态变量“staticV”似乎都会重新启动

请告知。
每次执行php脚本时,都会重新创建环境。HTTP请求或脚本调用之间没有状态

当您第一次将web浏览器指向
index.php
时,一个新的php环境被初始化,
$staticV
变为0

下次您将web浏览器指向
index.php
,同样的事情也会发生


如果要在web请求之间持久化
$staticV
,则需要不同的方法。HTTP是一种无状态协议,因此对网页的每次调用都不维护任何状态。该变量将是静态的,仅在index.PHP的PHP处理期间,下次加载index.PHP时,它将不会记住上次运行index.PHP时的任何状态,包括静态变量

要做到这一点,您需要使用某种数据持久性方法。将变量存储在文件、数据库、会话变量等中。将其存储在会话中可能是最好的选择。如果你需要的话,这里有一个

举个简单的例子

<?php
session_start();

if(isset($_SESSION['staticV']))
    $_SESSION['staticV']++;
else
    $_SESSION['staticV'] = 0;

echo $_SESSION['staticV'];
?>

php中的hmmmm变量在涉及不同调用的地方是不稳定的。每次启动php脚本时,都会重置变量。如果您希望在多个调用上实现持久性,则需要使用文件或数据库之类的持久性存储。会话/cookies也是一种方式


你把事情弄糊涂了。静态变量在脚本执行(!)内保持静态。脚本完成后,php引擎对变量或脚本一无所知


您应该使用cookie或数据库(或php会话选项)在会话期间保留值。

这是因为每次页面执行时,所有旧信息(存储在超全局文件中的信息除外,如$\u会话)都会被重置。这包括每次重新定义的函数。如果在生成该页面的过程中多次执行,那么您正在使用的代码将达到您预期的效果。单独的页面加载基本上可以看作是程序的单独实例化,因此您需要使用另一个位置来存储信息。数据库,文本文件,超全局。。。选择一个适合您的目的,并将其用作信息

请注意,如果您不想让此号码按顺序排列,而不是针对某个特定用户,而是针对所有用户,则必须进行额外的工作来处理同步