//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 在 匿名函数中 调用自身。。的更多相关文章

  1. JS里面匿名函数的调用 & 变量作用域的实验

    参考 http://www.educity.cn/wenda/54753.html 已实验验证结果正确. 1.下列哪些正确?(B.C) A.function(){ alert("Here!& ...

  2. 匿名函数中undefined形参疑问(转载)

    唉,基本功不扎实,昨天在微博上问了个问题,就匿名函数中undefined形参,不知道是干什么用的. 经常看到这样的匿名函数代码: ;(function( $, window, document,und ...

  3. 在信号处理函数中调用longjmp

    错误情况及原因分析 前两天看APUE的时候,有个程序要自己制作一个sleep程序,结果在这个程序中就出现了在信号处理函数中调用longjmp函数的情况,结果就出现了错误,具体错误是啥呢,请参见下面这段 ...

  4. underScore学习1:匿名函数中call(this)的作用

    匿名函数中(function(){}).call(this) 中的.call(this) 有什么用? 我们都知道,.call()可以改变函数执行时的context,即this的指向,源码中的.call ...

  5. 在类的成员函数中调用delete this

    最近面试的时候被问到一个问题是,在C++中,能否在类的成员函数中调用delete this,后来网上查了一下资料,关于这个问题说得比较好的有http://blog.sina.com.cn/s/blog ...

  6. js闭包中的this(匿名函数中的this指向的是windows)

    js闭包中的this(匿名函数中的this指向的是windows) 一.总结 1.普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样 2.让匿名函数中的thi ...

  7. javascript匿名函数自调用

    // 匿名函数的自调用 /*var f1 = function() { console.log('我是一个匿名函数!'); }*/ // f1(); // 上面是定义一个匿名函数,然后调用,其实上面就 ...

  8. 线程的函数中调用MFC对话框类的变量

    线程的函数中调用MFC对话框类的变量多线程传输文件的对话框 现在想要在对话框上添加一个进度条 为进度条映射变量m_progress这就需要在传输一段文件后就更新m_progress的值使进度条前进 也 ...

  9. Js文件函数中调用另一个Js文件函数的方法

    在项目中Js文件需要完成某一功能,但这一功能的大部分代码在另外一个Js文件已经完成,只需要调用这个文件实现功能.那么如何调用:一个Js文件函数中调用另一个Js文件函数的方法? (直接代码说明) 示例d ...

随机推荐

  1. js正则基础总结和工作中常用验证规则

    知识是需要系统的.就像js正则用了那么多次,却还是浑浑噩噩,迫切需要来一次整理,那么来吧! 基本知识 元字符 \d 匹配数字等于[0-9] \w 匹配字母.数字.下划线.中文 \s 匹配任意空白字符 ...

  2. Shell编程进阶 1.5 if逻辑判断

    逻辑判断 vim if.sh #!/bin/bash ## ## a= ] then echo "a>3" fi sh if.sh a>3 vim if2.sh #!/ ...

  3. char 与 String 之间的转换

    public class Test { public static void main(String [] args) { char c = 'a'; System.out.println (c); ...

  4. oracle 常用set命令

    SQL> set timing on;           //设置显示“已用时间:XXXX”SQL> set autotrace on;        //设置允许对执行的sql进行分析 ...

  5. Border Layout

    ------------------siwuxie095                             根面板 contentPane 的默认布局就是 Border Layout     B ...

  6. go build 命令

    go build命令简介 1.用于编译源码文件或代码包 2.编译非命令源码文件不会产生任何结果文件 3.编译命令源码文件会在该命令的执行目录中生成一个可执行文件 4.执行该命令切不追加任何参数时,他会 ...

  7. go语言linux环境配置

    linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ...

  8. Linux wine

    一.简介 Wine是Wine Is Not an Emulator(Wine不是模拟器)的缩写,其实是一个转换层(或程序装入器),能够在Linux及与POSIX兼容的其他类似操作系统上运行Window ...

  9. IP地址在mysql的存储

    因为int比varchar(15)更高效,且php和mysql都有ip和int互转的函数,所以在ip地址在mysql中用int存储最优. mysql存储这个值是字段需要用int UNSIGNED.不用 ...

  10. Android开发环境搭建及HelloWorld

    在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld.本文的主题如下: 1.环境搭建 1.1.JDK安装 1.2.Eclipse安装 1.3.Android S ...