批改状态:合格
老师批语:PHP自带的函数不需要死记硬背,但是要用的时候要知道有这个函数。
函数的含义:
- 代码复用的重要手段
- 函数名称以字母或下划线开头(不能以数字开头)
- 函数的名称应该提示出它的功能
使用function进行声明:function 函数名称的标识符(参数列表) {函数体:(由一条或多条语句组成,也可以为空)}标识符:必须满足php标识符的基本要求,只允许字母数字或下划线且不允许用数字开头
<?php// 函数的声明与调用function sum (float $a,float $b){return $a + $b;}echo sum (5,15);
输出结果:
是由用户自定义函数以及参数
<?php// 用户自定义函数// 自定义函数以及参数function sum(float $count,float $money){return $count*$money;}echo sum(10,299);
输出结果:

为系统自带的函数,无需定义可以直接使用;(举以下几个例子)
<?php$str = "php中文网";echo mb_substr($str, 0, 6);echo '<hr>';// rand():得到一个随机数; 例如:echo rand(1,10);echo rand(1,10) . '<hr>';// time():获取当前时间对应的时间戳;echo time().'<hr>';//strotlower()所有字符都转为小写(仅针对英文字母)echo strtolower('ASDFGHJKL').'<hr>';//round()将数字四舍五入echo round(5.6).'<br>';echo round(5.2).'<hr>';
输出结果:

这里只是一部分,系统函数还有很多,如果需要可前往:php中文网 查询
<?php// 可变函数function sum (float $a,float $b){return $a + $b;}// 将函数定义一个变量名称$sum1 = 'sum';// 使用可变变量输出echo $sum1(5,15).'<hr>';// 再用函数输出结果相同echo sum(5,15);
输出结果:

也被称之为‘闭包’;
<?php// 匿名函数$sum = function(float $a,float $b):float {return $a + $b;};echo $sum(5,15);echo '<hr>';// 闭包可以从父作用域中继承变量// 使用use()继承夫作用域变量$sum1 = 'php.cn';$sum2 = function() use($sum1) {return $sum1;};echo $sum2();
输出结果:

<?php// 字符串拼装function demo1(): string{$name = 'peter';$age = 20;return $name . ',' . '年龄:' . $age;}echo demo1();
输出结果:
<?php// 数组function demo(): array{$id = 1;$username= 'peter';return ['id'=>$id, 'name'=>$username];}print_r(demo());echo '<hr>';// 当id等于1时则返回name反则返回验证失败echo demo()['id'] === 1 ? demo()['name'] : '验证失败';
输出结果:

json:是js对象字面量的字符串表示,使用方法:json_code
<?php// json方式function demo1(): string{$name = 'peter';$age = 20;return json_encode(['name'=>$name,'age'=>$age]);}echo demo1();
输出结果:

<?php//序列化function demo1(): string{$name = 'peter';$age = 20;return serialize(['name'=>$name,'age'=>$age]);}echo demo1();//第1个元素键名为name为string类型,长度是4,值为string类型,长度是5,值为‘peter’;//第2个元素键名为age为string类型,长度是3,值为int类型,长度是3,值为20;echo '<hr>';// 反序列化: 还原print_r(unserialize(demo1()));
输出结果:
<?php// 函数的参数// 1. 值参数,这是默认function demo(float $count): float{// +20return $count += 20;}$nav = 10;echo demo($nav), '<hr>';echo $nav;
输出结果:

函数内部对参数的更新会映射到外部实际参数
<?php// 函数的参数// 引用参数function demo(float &$count): float{// 函数内部对参数的更新会实时映射到外部实际参数// +20return $count += 20;}$nav = 10;echo demo($nav), '<hr>';echo $nav;
输出结果:
凡是有默认值的参数,必须写到没有默认值参数的后面
<?php// 函数的参数// 默认参数// 凡是有默认值的参数,必须写到没有默认值参数的后面function demo(float $a, float $b, string $opt = '+'){$i = 0;switch ($opt) {case '+':$i = "$a + $b = " . ($a + $b);break;case '-':$i = "$a - $b = " . ($a - $b);break;case '*':$i = "$a * $b = " . ($a * $b);break;case '/':$i = "$a / $b = " . ($a / $b);break;default:$i = '非法操作符';}return $i;}echo demo(15,10),'<hr>';echo demo(10,20, '*'),'<hr>';// 使用其他字符,未识别提示非法操作字符echo demo(10,20, '@'),'<hr>';
输出结果:

<?php// 函数的参数// 例如:一个数量不固定的数求和,参数前面加...function demo(...$num){//array_sum为数组求和函数return array_sum($num);}// 定义数组$arr = [1,3,5,7,9,11];// 无论数组有多少个,全部进行计算$res = demo(...$arr);echo $res;
输出结果:
注释:只要有一个代码用到命名空间那么所有代码都要用到命名空间。
<?php// 命名空间namespace ns1 {function demo(){return '空间1';}}namespace ns2 {function demo1(){return '空间2';}}// 全局空间: 匿名空间,默认空间namespace {function demo1(){}echo ns1\demo();echo '<br>';echo ns2\demo1();}
输出结果:

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号