这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 php 基于闭包实现函数的自调用, 结合实例形式分析了 php 闭包实现递归的操作方法, 需要的朋友可以参考下
本文实例讲述了 php 基于闭包实现函数的自调用 (递归) 的方法。分享给大家供大家参考,具体如下:
php 的闭包可能不常用,但是在某些场合之下还是可以考虑用 php 的闭包来实现某些功能的,比如递归,这里讲一下用 php 的闭包实现递归
- //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));
这是一个简单的使用 php 闭包实现递归的函数,其实,假如我们对这个函数稍微修改一下,是可以实现很多功能的,比如说,无限极分类。
关于里面的闭包函数,其实,我们也可以不用引用外面的 closure 参数,里面的闭包函数的参数,我们可以在 closure 的内部设置。
我们也可以不用返回闭包函数的值,因为闭包函数是在 closure 函数里面,我们可以在 closure 里面设置一下变量传递给闭包函数,然后,用闭包递归获取我们想要的东西存储在数组中,再利用 closure 函数返回闭包函数获取的东西,所以,闭包函数也可以没有返回值的,关键是你要获取什么东西。
总之,你只要利用这个闭包函数实现你要的东西,然后返回你需要的东西即可,不一定非要从闭包函数的返回值中获取。
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0803/341316.html