1. 函数的返回值,参数

1、函数就是一段代码块
2、函数可以实现模块化编程
函数定义
function 函数名(参数1,参数2,…){
//函数体
//return
}

  • 返回值

    PHP 中提供了 return 语句来返回函数的运行结果,其语法格式如下: return 返回值; 可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。

    • 返回单个值
      1. function square($num)
      2. {
      3. return $num * 2;
      4. }
      5. echo square(2),'<br>'; //输出 4.
    • 函数不能返回多个值,但可以通过返回一个数组来得到类似的效果
      1. // 返回数组
      2. function numbers()
      3. {
      4. return array(1, 2, 3);
      5. }
      6. var_dump(numbers()); //输出 array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }.
    • 返回json字符串
      1. // 返回json字符串
      2. function jsons()
      3. {
      4. return json_encode(array('code'=>1,'msg'=>'登陆成功'),JSON_UNESCAPED_UNICODE);
      5. }
      6. var_dump(jsons()); //输出 string(31) "{"code":1,"msg":"登陆成功"}".
    • 返回序列化
      1. function selizes()
      2. {
      3. return serialize(array('code'=>1,'msg'=>'登陆成功'));
      4. }
      5. var_dump(selizes()); //输出 string(51) "a:2:{s:4:"code";i:1;s:3:"msg";s:12:"登陆成功";}".
    • 返回函数
      1. function funs()
      2. {
      3. return function (){};
      4. }
      5. var_dump(funs()); //输出 object(Closure)#1 (0) { }.
  • 参数

    函数的参数有形式参数和实际参数
    1、函数的参数默认是值传递
    2、如果要传递地址,在参数前面加&
    3、如果是地址传递,不能直接写值
    参数个数不匹配
    1、实参少于形参(报错)
    2、实参多于形参,只取前面对应的值
    3、func_num_args() //获取参数的个数
    4、func_get_args() //获取参数数组

  • 参数默认值
    1、在定义函数的时候给形参赋值就是参数的默认值
    2、默认值必须是值,不能用变量代替
    3、默认值可以使用常量
    4、有默认值的写在后面,没有默认值的写在前面

    1. function sum($a, $b, $c=10)
    2. {
    3. return $a + $b + $c;
    4. }
    5. echo sum(1,2,20); // 输出 23
    6. echo sum(1, 2); //输出 13 c使用了默认值10
    7. echo sum(1, 2, 30, 40); //输出 33 不报错
  • 定义变长参数...$参数

    当使用变长参数时,可使用…$arry展开数组

    1. function sum(...$numbers) {
    2. $acc = 0;
    3. foreach ($numbers as $n) {
    4. $acc += $n;
    5. }
    6. return $acc;
    7. }
    8. echo sum(1, 2, 3, 4); //输出 10
  • 参数约束(7.0后)

    • 类型约束

      1. //约束$name是字符串型,$age是整型
      2. function fun(string $name,int $age) {
      3. echo "姓名:{$name},年龄:{$age}";
      4. }
      5. fun('tom',22); //输出姓名:tom,年龄:22
    • 返回值约束

      1. function fun(int $num1,int $num2):int { //必须返回整型
      2. return $num1+$num2;
      3. }
      4. echo fun(10,20); //输出 30

2. 回调函数,匿名函数

  • 回调函数

    回调函数就是一个作为函数的参数来传递的函数. 回调函数在主线程执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后, 再回到主线程处理接下来的流程
    php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持.

    • call_user_func()call_user_func($callback,参数1,参数2,…)的参数个数根据回调函数的参数来确定的。

      1. // 自定义一个匿名函数
      2. $sum = function ($a, $b) {
      3. return $a + $b;
      4. };
      5. echo call_user_func($sum,2,4); //输出 6
    • call_user_func_array()call_user_func_array ($callback ,$param_arr),它只有两个参数。是以数组的形式接收回调函数的参数

      1. // 自定义函数
      2. $sum = function (...$arr) {
      3. $total = 0;
      4. foreach ($arr as $v) {
      5. $total += $v;
      6. }
      7. return $total;
      8. };
      9. echo call_user_func_array($sum, array(1,2,3,4,5)); //输出 15
  • 匿名函数

    匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数 callable参数的值。

  1. // 匿名函数
  2. $greet = function($name)
  3. {
  4. printf("Hello %s\r\n", $name);
  5. };
  6. $greet('World'); //输出 Hello World
  7. $greet('PHP'); //输出 Hello PHP

匿名函数可以用 use 语言结构从父作用域中继承变量。

  1. $play = '吃过了么';
  2. $greet = function($name) use ($play)
  3. {
  4. printf("Hello %s,%s\r\n", $name, $play);
  5. };
  6. echo $greet('张三'); //输出 Hello 张三,吃过了么

更多相关文章

  1. php之函数,匿名函数与回调函数
  2. 使用 IntraWeb (33) - Cookie
  3. Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数
  4. XP 之后, Delphi 动注册表不方便了...逼出来一个办法:
  5. C++(template模板 && 函数模板)
  6. 读深度学习《深度学习简介》
  7. 异常 - 虚拟机初始化错误 - Error occurred during initializati
  8. Laravel 添加自定义函数
  9. 文件下载函数

随机推荐

  1. Android(安卓)RingtoneManager铃声管理
  2. Android 使用html做UI的方法---js与java
  3. 应用界面主题Theme使用方法
  4. 用Eclipse开发Android应用程序(3): 开发
  5. Android连接Mysql数据库教程以及增删改查
  6. android设置系统语言,字体大小,字体样式导
  7. Service与Android系统实现(1)
  8. Android(安卓)Zygote进程源码分析
  9. Android(安卓)自己总结的工具类 BitmapUt
  10. android 获取字体宽高