博客列表 >07-30作业:参数使用及匿名函数调用

07-30作业:参数使用及匿名函数调用

子傅
子傅原创
2019年07月31日 02:27:12780浏览

1、默认参数

默认参数 指在函数定义过程时,提前为函数的形参设置好了默认值,在函数调用但未提供实参时,所采用的赋值方式

实例

<?php
//默认参数 指在函数定义过程时,提前为函数的形参设置好了默认值,在函数调用但未提供实参时,所采用的赋值方式
function sum ($a = 20 ,$b = 10){
    return $a*$b;
}
echo sum()."<br>";  //调默认属性输出200

echo sum(1)."<br>";;  //第二个变量调默认属性 输出10

echo sum(2,4)."<br>";  //输入两个变量,输出 8

function str($a="同志们,",$b="祝你工作愉快"){
    return $a.$b;
}

echo str().'<br>'; //同志们,祝你工作愉快

echo str("老张,").'<br>';//老张,祝你工作愉快

运行实例 »

点击 "运行实例" 按钮查看在线实例


二、剩余参数

在函数参数设置中使用  ...变量名 方式设置的形参,称之为剩余参数,剩余参数可代表未被直接赋值的所有实参,且所有实参之间以数组的形式存储在一起,

实例

<?php
//剩余参数,函数中参数设置中使用 ...变量名 方式设置的形参,称之为剩余参数,剩余参数可代表未被直接设置所有实参,且所有实参之间
//以数组的形式存储在一起,
function add ($a,$b,...$c){
    return $a+$b+array_sum($c);
}

echo add(1,2,3,4,5,6,7,8,9,10)."<br>"; //1到10之和 = 55

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、函数的作用域 (超全局变量和常量)

函数中的变量访问  超全局变量  常量 不受作用域限制,

  1. 函数中不能直接访问外部全局变量 需要用 global 声明后 才可访问

  2. 函数中不能直接访问外部全局变量 但是可以使用超全局变量 $GLOBAL['变量名'] 访问

  3. 常量 const  常量一般用大写字母标识 不需要变量符$,访问常量可直接访问

  4. 函数内变量的访问,可以通过return返回值的方式访问

  5. return返回值只能由一个数据,但是可以通过返回数组或者对象返回多个数据。

实例

<?php
//函数中的变量访问  超全局变量  常量 不受作用域限制

//定义全局变量 $title
$title_one ="飞雪连天射白鹿";
function demo1(){
    //函数中不能直接访问外部全局变量 需要用 global 声明后 才可访问
    global $title_one;
    return "金庸十四本书的对联:<br>".$title_one."<br>";
}
echo demo1();

function demo2(){
    //函数中不能直接访问外部全局变量 但是可以使用超全局变量 $GLOBAL['变量名'] 访问
    return "金庸十四本书的对联:<br>".$GLOBALS['title_one']."<br>";
}
echo demo2();

//定义 常量 const  常量一般用大写字母标识 不需要变量符$

const STR = "www.baidu***";
function demo3(){
    //返回常量STR的值
    return STR;
}
echo demo3();

运行实例 »

点击 "运行实例" 按钮查看在线实例


四、匿名函数

即没有定义函数名的函数 即 function(){} 在PHP中也称为闭包函数
匿名函数 不设置函数名 但可以将返回值保存在一个变量中 如 $add=function(){}

实例

<?php
//匿名函数,即没有定义函数名的函数 即 function(){} 在PHP中也称为闭包函数
//允许临时创建一个没有指定名称的函数,被用作回调函数参数的值

// 匿名函数 不设置函数名 但可以将返回值保存在一个变量中 如 $add
$add =function ($a,$b){
    return $a+$b;
}; // $add = 值  是赋值语句 所以要以分号结尾

echo $add(5,10)."<br>"; //输出15

//匿名函数作为函数的回调参数使用

$tel = "13800000001"; //全局变量
$a = function(){      //变量赋值匿名函数 返回外部数据
    return $tel;      //因为没有声明或使用超全局方法调用 本次调用失败
};

$b = function()use($tel){  //匿名函数括号后 使用use(变量名)调用外部变量,函数体内返回成功
    return $tel;           //调用到内部的变量也拥有修改的权限
};
echo $b();

$c = function()use($tel){  //匿名函数括号后 使用use(变量名)调用外部变量,函数体内返回成功
    $tel = "13777777771";
    return $tel;           //调用到内部的变量也拥有修改的权限
};
echo $c();  //输出 13777777771 函数体内部修改的变量值,对于在外部变量的原值不做产生影响

运行实例 »

点击 "运行实例" 按钮查看在线实例

五、函数调用

函数的调用由传统的方式 和只用函数回调的方式 常用的两个方法 call_user_func( ) 或call_user_func_array()

两种回调的方法,call_user_func_array( )更为常用,可以调用函数 也可以调用系统函数,类方法 类静态方法 

需要注意使用时的具体写法。

实例

<?php
//函数的调用

function add($a,$b){
    return $a+$b;
}
//常用的函数调用方式 --传统方式
echo add(10,8).'<br>';//输出18


//第二种函数调用方式 --回调方式 调用   call_user_func("函数名",函数参数);
//call_user_func(被调用的回调函数,回调函数的参数) 把第一个参数作为回调函数调用
echo call_user_func("add",10,6).'<br>'; //输出16


//第三种函数调用方式 call_user_func_array("函数名","参数数组")
//call_user_func_array(被调用的回调函数,参数数组作为参数传入) 调用回调函数,并把一个数组参数作为回调函数的参数
echo call_user_func_array("add",[10,8]).'<br>'; //输出18

//call_user_func_array() 也可以调用系统函数 如 系统函数 print_r
print_r([2,4,6,8,10]);
echo call_user_func_array("print_r",[[2,4,6,8,10]]).'<br>';

//call_user_func_array() 也可以调用对象
class A {
    function sum($a,$b){
        return $a+$b;
    }

    //类中的静态方法
    static function mul($a,$b){
        return $a * $b;
    }
}
// call_user_func_array() 调用对象(类)中的方法 sum
echo call_user_func_array([new A,'sum'],[5,8]).'<br>';//输出13

//使用call_user_func_array()调用类中的静态方法  mul 如下

echo call_user_func_array(['A','mul'],[4,6]).'<br>';//输出24

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议