博主信息
博文 28
粉丝 0
评论 1
访问量 27862
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
函数知识总结
南宫
原创
994人浏览过

1. 函数的声明与调用

关键字 : function

语法 function 函数名(参数列表):返回类型{函数体}

函数名:只允许字母数字或下划线组成,且不能用数字开头

  1. function isOdd(int $num):bool{
  2. if ($num % 2 == 0):
  3. return false;
  4. else :
  5. return true;
  6. endif;
  7. }
  8. echo '<br>';
  9. echo isOdd(5) ? '是奇数' : '是偶数';

2. 函数的类型

  • 自定义函数
  1. function isEven(int $num):bool{
  2. if ($num % 2 == 0):
  3. return true;
  4. else :
  5. return false;
  6. endif;
  7. }
  8. echo '<br>';
  9. echo isEven(5) ? '是偶数' : '是奇数';
  • 系统函数
  1. //判断变量是不是整数类型
  2. $a = '12';
  3. echo is_int($a): '是整数类型':'不是整数类型';
  • 可变函数
  1. function isEven(int $num){
  2. if($num % 2 == 1):
  3. echo '奇数';
  4. else:
  5. echo '偶数';
  6. endif;
  7. }
  8. isEven(8);
  9. $middle = "isEven";
  10. echo '<br>';
  11. $middle(9);
  • 匿名函数
  1. $sum = function(int $a,int $b){
  2. echo '<br>',"$a + $b =" .($a+$b);
  3. };
  4. $sum(11,34);
  • 用匿名函数可以访问全局变量
  1. $per = 0.5;
  2. $result = function (float $money, int $num) use ($per) : float
  3. {
  4. $total = $money * $num;
  5. return ($total > 20000) ? ($total* $per) : $total;
  6. };
  7. echo '<hr>','实付金额 = ' . $result(20000, 4), '<hr>';
  1. //用匿名函数做闭包,可以保证变量安全性
  2. $a = function(){
  3. $c = 1;
  4. $d = function(int $i, int $j) use ($c) :int{
  5. return ($i + $j);
  6. };
  7. return $d;
  8. };
  9. echo '<hr>'.$a()(2,4),'<hr>';

3. 函数的返回值

  • 通过字符串拼接
  1. function demo1():string{
  2. $status = 200;
  3. $message = '返回成功';
  4. return $status.':'.$message;
  5. }
  6. echo demo1();
  • 通过数组返回
  1. function demo2():array{
  2. $status = 200;
  3. $message = '返回成功';
  4. return ['status'=>$status,'msg'=>$message];
  5. }
  6. echo demo2()['status'] === 200 ? demo2()['msg'] : '未获取到数据','<hr>';
  • 通过json返回,json:是js对象字面量的字符串表示
  1. function demo3():string{
  2. $status = 200;
  3. $message = '返回成功';
  4. return json_encode(['status'=>$status,'msg'=>$message]);
  5. }
  6. echo demo3(),'<hr>';
  • 序列化方式
  1. function demo4():string{
  2. $status = 200;
  3. $message = '返回成功';
  4. return serialize(['status'=>$status,'msg'=>$message]);
  5. }
  6. echo demo4(),'<hr>';
  7. //返回
  8. //a:2:{s:6:"status";i:200;s:3:"msg";s:12:"返回成功";}
  9. // 反序列化: 还原
  10. print_r(unserialize(demo4())['msg']);

4. 函数的参数

  • 值参数,这是默认
  1. function demo1(int $num){
  2. return $num += 3;
  3. }
  4. echo demo1(11),'<hr>';
  • 引用参数,要在参数前添加取地址符&
  1. function demo6(int &$num){
  2. $num = 13;
  3. }
  4. $num = 18;
  5. echo '初始值:',$num,'<hr>'; // 初始值:18
  6. demo6($num);
  7. echo $num,'<hr>';//13
  • 参数设置默认值
    注意: 凡是有默认值的参数,必须写到没有默认值参数的后面
  1. function demo7(int $age,string $sex = '男'){
  2. return '年龄:'.$age .'<br>性别:'.$sex.'<br>';
  3. }
  4. echo demo7(13);
  • 参数不固定
  1. function demo8(...$args){
  2. return max($args);
  3. }
  4. $arr = [34,21,12,112,99];
  5. //数组变成多个值传入函数 可以用...$arr
  6. $max = demo8(...$arr);
  7. print_r($max );

5. 函数的命名空间

  1. namespace space1{
  2. function demo1(){
  3. return "这是space1";
  4. }
  5. }
  6. namespace space2{
  7. function demo1(){
  8. return "这是space2";
  9. }
  10. }
  11. namespace {
  12. echo space1\demo1();
  13. }
批改老师:GuanhuiGuanhui

批改状态:合格

老师批语:代码写的可以!整体还需加点文字描述下!
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学