Blogger Information
Blog 28
fans 0
comment 1
visits 21319
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数知识总结
南宫
Original
739 people have browsed it

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. }
Correcting teacher:GuanhuiGuanhui

Correction status:qualified

Teacher's comments:代码写的可以!整体还需加点文字描述下!
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post