博客列表 >函数知识总结

函数知识总结

南宫
南宫原创
2020年07月08日 17:01:25737浏览

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. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议