08-PHP函数的应用

文章目录

  • 函数定义
  • 函数的优越性
  • 判断函数是否存在
  • 自定义函数
    • 定义
    • 变量
    • 常规参数的函数
    • 引用参数的函数
    • 默认参数的函数
    • 可变个数参数的函数
    • 变量函数
    • 回调函数
      • 制作回调函数
    • 系统函数
    • 递归函数
    • 加载自定义的函数库
    • 匿名函数
    • 闭包函数


函数定义

函数是一段完成指定任务的以命名代码块。 函数可以遵照给它的一组值或参数完成特定的任务,并且可能返回一个值。在php中有两种函数:自定义函数和系统函数

函数的优越性

  • 控制程序设计的复杂性
  • 提高软件的可靠性
  • 提高软件的开发效率
  • 提高软件的可维护性
  • 提高程序的重用性

判断函数是否存在

function_exists():判断函数是否存在

自定义函数

定义

自定义函数语法格式:

function 函数名称([参数1[,参数2[,...]]]){
    程序内容叙述(函数体);
    [return 返回值;]//如需函数有返回值时使用
}
//return也有终止函数运行的意思

函数的使用:

函数名称([参数1[,参数2[,...]]]);

自定义函数的名称

它是函数在程序代码中的识别名称,函数名可以是以字母或下划线开头后跟零个或多个字母、下划线和数字的任何字符串。函数名不区分大小写,命名函数时不可使用已声明的函数,或php内建的函数名称。

参数

所谓的参数就是用来把数值由函数外部传入函数体中,并用来加以运算处理。参数之间用","号隔开。当函数不需要任何数值传入时,可以省略参数。

返回值

当调用函数时需要它返回一些数值,那么就要函数体中用return
语句实现。return 返回值;

变量

局部变量
函数内部声明的变量,只能在函数内部调用,这就是------++局部变量++
函数的参数就是一个局部变量,声明是形成的,可以在调用时,给值,传值

全局变量
全局变量,在函数外部声明的变量,可以在每个函数中使用(顺序)。
在函数内部如果需要使用函数外部的变量,需要使用global关键字,将外部变量引入


输出:姓名

静态变量
一个静态变量在所有对该函数的调用之间共享,并且仅在脚本的执行期间函数第一次被调用时被初始化。要声明函数变量为静态的用关键字static。 通常,静态变量的第一次使用时赋予一个初始值


输出:01234

常规参数的函数

  • 常规函数格式说明:String example(string name,int age, double height)
  • 常规参数的函数,就是实参和形参应该个数相等、类型一致。
  • 上面函数有三个参数,调用时传递的参数个数和顺序必须一致

伪类型参数

  • 伪类型参数的函数格式说明:mixed funName(mixed $a,number $b,callback $c)
  • 三种伪类型:mixed(任意类型)、number、callback(函数类型)

引用参数的函数

  • 引用参数的函数格式说明:void funName(array &args)
  • 当该数值在函数中有任何变动时,会连带队父程序造成影响
  • 注意:如果在函数的形参中使用"&"修饰的参数,在调用函数时必须传入一个变量给这个参数,不能传递一个值。

输出:100100

默认参数的函数

  • 默认参数的函数格式说明:mixed funName(string name[,string value [,int num]])
  • 在php中,支持函数的默认方式调用,如果在调用函数时没有知道参数的值,在函数中会使用参数的默认值
  • 注意:默认参数必须列在所有没有默认值参数的后面。

输出:13

可变个数参数的函数

  • 可变个数参数的函数格式说明:mixed funName(string arg1[,string ...])
  • 通常用户定义函数时,设置的参数数量是有限的。如果希望函数可以接受任意数量的参数,需使用一下函数:
    • func_get_args()//返回一个数组,包含所有参数
    • func_num_args()//返回参数总数
    • func_get_arg()//接收一个数字参数,返回指定参数

变量函数

如果将一个函数名称,给一个变量,然后再这个变量后面加上括号,就会调用这个变量值对应函数

例子:


输出:28

回调函数

  • 回调函数格式说明:mixed funName(callback arg)
  • 回调函数就是指调用函数时并不是传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中
    1. 变量函数
    2. 使用变量函数声明和应用的回调函数
    3. 借助call_user_func_array()函数自定义回调函数
    4. 类静态函数和对象的方法回调
strlen($b))
        return 1;
    else if(strlen($a)";
print_r($arr);
?>
输出:
Array ( [0] => abc [1] => a [2] => aaaa [3] => abcde [4] => aaaaaaaaa ) 
Array ( [0] => a [1] => abc [2] => aaaa [3] => abcde [4] => aaaaaaaaa )

制作回调函数

  1. 使用变量函数声明和应用回调函数
";
    }
}
//过滤所有的回文数
function test($i){
    //strrev:翻转字符串
    if($i==strrev($i))
            return true;
    else return false;
}

demo(500,"test");
  1. 借助call_user_func_array()函数调用函数
";
    }
}
//过滤所有的回文数
function test($i){
    //strrev:翻转字符串
    if($i==strrev($i))
            return true;
    else return false;
}

demo(500,"test");
  1. 类静态函数和对象的方法回调
";
    }
}
demo(500,array(new Filter(),"one"));//类中方法的回调
demo(500,array("Filter","two"));//类中静态方法的回调
?>

系统函数

例如:遍历一层目录

$dirname="./phpmyadmin";
function fordir($dirname){
    //打开目录资源
    $dir=opendir($dirname);
    
    readdir($dir);
    readdir($dir);
    while($file=readdir($dir)){
        $nfile=$dirname.'/'.$file;
        if(is_dir($nfile)
            echo "目录:{$nfile}
"; else echo "文件:{$nfile}
"; } closedir($dir);//关闭目录资源 } fordir($dirname);

递归函数

例子:遍历文件夹下所有的文件,

$dirname="./phpmyadmin";
function fordir($dirname){
    //打开目录资源
    $dir=opendir($dirname);
    
    readdir($dir);
    readdir($dir);
    while($file=readdir($dir)){
        $nfile=$dirname.'/'.$file;
        if(is_dir($nfile)
            echo "目录:{$nfile}
"; fordir($nfile); else echo "文件:{$nfile}
"; } closedir($dir);//关闭目录资源 } fordir($dirname);

加载自定义的函数库

  • 代码重用
    • 通过重复使用已有的代码,提高开发效率,降低成本
  • include()和require()函数
    • require()将一个文件在预处理期间被导入,像把文件粘贴到使用函数的地方
    • include()与require()几乎等价,区别在于脚本执行时包含,当处理失败时,include()产生一个警告而require()则导致一个致命错误
  • include_once()、require_once()函数
    • 与include()、require()类似,唯一区别就是:如果该文件中的代码已经被包括,则不会再次包括,只会包括一次。

匿名函数

例子:

$var=function($a,$b,$c){
    return $a+$b+$c;
};//一定要加分号结束

var_dump($var);

闭包函数

  • PHP闭包实现主要靠匿名函数
  • 将匿名函数在普通函数中当做参数传入,并可以被返回,就实现了一个简单的闭包
  • 通俗的说:子函数可以使用父函数中的局部变量,这种行为就叫闭包
  • 闭包的两个特点:
    1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态
    2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区

连接闭包和外界变量的关键字:USE 闭包可以保存在代码块上下文的一些变量和值。PHP在默认情况下,匿名函数不能调用所在代码块的上下文变量,而需要通过使用 use 关键字
例子

你可能感兴趣的:(PHP基础知识)