返回上一级
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(); // 其他函数也能知道是否执行过
总结
以上两种方法都可以让一个函数只运行一遍。使用静态变量更常见,因为它将变量的作用范围限制在函数内部,避免了全局变量带来的潜在问题。