返回上一级

PHP生命周期内让函数只运行一遍

静态变量

通过使用静态变量$isExecuted,实现了只执行一次的效果。静态变量只会在函数第一次调用时初始化,之后的调用都会保留上次调用时的值。

 1function myFunction() {
 2    static $isExecuted = false;  // 静态变量,初始值为false
 3
 4    if (!$isExecuted) {
 5        // 函数的逻辑代码
 6        echo "这里的代码只会执行一次";
 7
 8        $isExecuted = true;  // 修改静态变量的值
 9    }
10
11    echo "这里的代码可以每次都执行";
12}
13
14myFunction();  // 输出:这个函数只会执行一次
15
16myFunction();  // 再次调用,不会再执行任何代码

全局变量

通过使用全局变量$isExecuted,在函数内部判断全局变量的值,从而实现了只执行一次的效果。

因为是全局变量,其他在函数中也能知道是否执行过,甚至可以提前修改全局变量来跳过执行。

 1$isExecuted = false;  // 全局变量,初始值为false
 2
 3function myFunction() {
 4    global $isExecuted;  // 使用全局变量
 5
 6    if (!$isExecuted) {
 7        // 函数的逻辑代码
 8        echo "这个函数只会执行一次";
 9
10        $isExecuted = true;  // 修改全局变量的值
11    }
12}
13
14function checkMyFuction(){
15    global $isExecuted;  // 使用全局变量
16
17    if ($isExecuted) {
18        echo "myFunction执行过了";
19    }
20}
21
22myFunction();       // 输出:这个函数只会执行一次
23
24myFunction();       // 再次调用,不会再执行任何代码
25
26checkMyFuction();   // 其他函数也能知道是否执行过

总结

以上两种方法都可以让一个函数只运行一遍。使用静态变量更常见,因为它将变量的作用范围限制在函数内部,避免了全局变量带来的潜在问题。