Blogger Information
Blog 49
fans 2
comment 1
visits 22338
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
07-30作业:参数使用及匿名函数调用
子傅
Original
787 people have browsed it

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

运行实例 »

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


Correction status:qualified

Teacher's comments:php中的函数, 远没有javascript中的功能 强大, 但已经足够好了, 多做些练习
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post