[toc]
函数是实现代码复用的重要方式,在所有编程语言中均如此
function 函数名称(类型: 参数列表): 返回值类型{// 函数体return 返回值;}
| 序号 | 名称 | 描述 |
|---|---|---|
| 1 | function |
声明函数 |
| 2 | 函数名称 |
符合 PHP 标识符命名规范,不区分大小写 |
| 2 | 参数列表 |
零个或多个接收外部传入到函数的变量 |
| 2 | {... |
创建出一个封闭的函数作用域 |
| 2 | 函数体 |
由零个可多个合法的 PHP 语句组成 |
| 2 | return 值 |
将执行结果返回函数调用者[可选] |
| 2 | ...} |
函数执行结束,如果没有return,则返回null |
| 序号 | 类型 | 语法 | 描述 |
|---|---|---|---|
| 1 | 自定义函数 | function getName(){...} |
用户根据业务需求创建 |
| 2 | 系统函数 | substr(), count()... |
也叫预定义函数,不必声明直接调用 |
| 3 | 可变函数 | $funcName(); |
函数名使用变量表示 |
| 4 | 匿名函数 | $f = function (){...} |
也叫”闭包”或”函数表达式”,常用做回调处理 |
<?php//1、自定义函数function add(int $a,int $b) : int{return $a+$b;}//2、系统函数//3、可变函数function multiply(int $a,int $b) : int{return $a*$b;}$func_name = 'add';echo $func_name(3,2).PHP_EOL;$func_name = 'multiply';echo $func_name(3,2).PHP_EOL;//4、匿名函数(也叫闭包, 可以访问父作用域的变量)$num = 100;$getNum = function() use($num) : int{return $num;};echo $getNum().PHP_EOL;$f = function($a){return function($x,$y) use($a){return $x*$y*$a;};};echo $f(10)(20,30);
| 序号 | 场景 | 描述 |
|---|---|---|
| 1 | return |
可以返回任何类型的值,包括函数类型 |
| 2 | 无return |
遇到}也会返回, 默认返回null |
| 序号 | 返回值类型 | 描述 |
|---|---|---|
| 1 | string |
字符串拼接 |
| 2 | array |
数组 |
| 3 | json |
JSON 字符串 |
| 4 | serialize |
序列化字符串 |
json 和序列化,使用时需要进行解码操作
参数类型
| 序号 | 类型 | 描述 |
|---|---|---|
| 1 | 值参数 | 默认传参方式 |
| 2 | 引用参数 | 改变原始调用参数值 |
| 3 | 默认参数 | 调用时允许省略的参数 |
| 4 | 剩余参数 | 调用参数数量不确定 |
<?phpfunction sum() :int{$sum = 0;if(func_num_args()>0){foreach(func_get_args() as $v){$sum += $v;}}return $sum;}// echo sum(1,2,3,4,5);function sum2(...$args) :int{return array_sum($args);}$arr = [1,2,3,4,5,6];// echo sum2(...$arr);$arr = ['aba',22,'man'];list($name,$age,$sex) = $arr;// echo "姓名:$name,年龄:$age,性别:$sex".PHP_EOL;list($name1,,$sex1) = $arr;// echo "姓名:$name1,性别:$sex1";$user[] = [100, 'admin', 90];$user[] = [110, 'peter', 60];$user[] = [120, 'jack', 98];// 数组解包// js中解构赋值, php中也有解构foreach ($user as list($id, $name)) {printf('id=%s, name=%s ', $id, $name);}
| 语法 | 类型 | 执行方式 | 应用场景 |
|---|---|---|---|
| 匿名函数 | 闭包Closure |
异步 | 函数参数 |
异步执行,是指当前函数的执行并不会中断当前程序的执行流程
```---## 6. 命名空间- 使用目录来整理文档, 允许将同名文档,存储在不同的目录下面即可- 不同目录下的同名文件,访问时必须带上的它的目录名称,以未区别- 命名空间采用类似的思想,同名函数,只要声明在不同空间中即可- 同样, 访问这些函数时, 也需要带上它的命名空间才可以```php<?php// 函数的命名空间// 命名空间是防止全局员成的命名冲突的// 全局成员: 函数, 常量, 类, 接口namespace ns1{function demo1() : string{return __FUNCTION__;}}namespace ns2{function demo1() : string{return __FUNCTION__;}}// 全局空间namespace{echo \ns1\demo1();echo '<hr>';echo \ns2\demo1();}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号