Home > Article > Backend Development > Analysis of self-calling (recursive) functions in PHP based on closures
The example in this article describes the method of self-calling (recursive) functions in PHP based on closures. I share it with you for your reference, as follows:
PHP closures may not be commonly used, but in some situations you can still consider using PHP closures to implement certain functions, such as recursion, here Let’s talk about using PHP closures to implement recursion
//php闭包实现函数的自调用,也就是实现递归 function closure($n,$counter,$max){ //匿名函数,这里函数的参数加&符号是,引址调用参数自己 $fn = function (&$n,&$counter,&$max=1) use(&$fn){//use参数传递的是函数闭包函数自身 $n++; if($n < $max){//递归点,也就是递归的条件 $counter .=$n.'<br />'; //递归调用自己 $fn($n,$counter,$max); } return $counter; };//记得这里必须加``;``分号,不加分号php会报错,闭包函数 /* *这里函数closure的返回值就是调用闭包的匿名函数 *而闭包函数,引用closure函数传进来的参数 */ return $fn($n,$counter,$max); } echo (closure(0,'',10));
This is a simple function that uses PHP closures to implement recursion. In fact, if we understand this function a little With some modifications, many functions can be achieved, such as Infinitus classification.
Regarding the closure function inside, in fact, we don’t need to refer to the external closure parameters. We can set the parameters of the closure function inside the closure.
We don’t need to return the value of the closure function, because the closure function is inside the closure function. We can set variables in the closure and pass them to the closure function, and then use the closure to recursively obtain what we want. The required things are stored in the array, and then the closure function is used to return the things obtained by the closure function. Therefore, the closure function can also have no return value. The key is what you want to obtain.
In short, you only need to use this closure function to achieve what you want, and then return what you need. It does not necessarily have to be obtained from the return value of the closure function.
The above is the content of the self-calling (recursive) example analysis of PHP's closure-based implementation function. For more related content, please pay attention to the PHP Chinese website (www.php.cn) !