例如,我在递归函数中有一个静态变量,我希望该变量在递归的每次调用中都是静态的,但是一旦递归完成,我希望重置该变量,以便下次我使用递归函数时,它会从头开始。
比如我们有一个函数:
<?php
function someFunction() {
static $variable = null;
do stuff; change value of $variable; do stuff;
someFunction(); # The value of $variable persists through the recursion.
return ($variable);
}
?>
我们可以像这样第一次调用该函数:someFunction();
它将正常工作。然后我们再次调用它:someFunction();
但这次它以 $variable
的先前值开始。我们如何在第一次调用该函数的递归后重置它,以便我们第二次调用它就像重新开始一样?
最佳答案
最简单的做法是将变量作为参数传递。我真的不会在这里乱用静态。
function someFunction($value = null) {
do stuff; change value of $value; do stuff;
someFunction($value); # The value of $variable persists through the recursion.
return $value;
}
作为一般规则,您应该必须将参数传递给函数(除非它们对同一类中的类属性进行操作)...它们不应该是全局的,并且在递归的情况下,这可能不是一个好主意他们是静态的……把一个函数当作一个黑盒子……值进去……他们用/对他们完成工作,结果就出来了。他们不应该知道其他地方发生的事情。有一些异常(exception),但在 IMO 看来是极少数。
关于php - 递归完成后,如何清除 PHP 中的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5812953/