Blogger Information
Blog 32
fans 2
comment 0
visits 27921
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数的声明与调用,参数,返回值及类型等
简行
Original
1175 people have browsed it
一.函数的声明与调用

1.函数声明语法

  1. <?php
  2. /*
  3. function 函数名称的标识符(参数) {
  4. 由代码语句组成,也可以为空的函数体
  5. }
  6. */

2.函数名命名规则:只允许字母数字或下划线且不允许用数字开头
function usename(){}

3.函数示例声明调用,输出:

  1. <?php
  2. //函数声明
  3. function usename($name):string //其中string是标识返回类型
  4. {
  5. return "用户名称是:".$name;
  6. }
  7. // 函数调用
  8. echo usename("admin");
二.函数类型

1.自定义类型 :开发者自己定义的函数

  1. <?php
  2. //自定义函数
  3. function wages(int $n,float $money):float
  4. {
  5. return $n * $money;
  6. }
  7. echo "本月工资=".wages(20,100);

2.系统函数:可直接使用

  1. <?php
  2. //系统函数
  3. $num = 5;
  4. $arr = [5,6,7,9,1];
  5. //判断一个变量值是否在一个数组中,是则返回bool(true),反之测返回bool(false)
  6. var_dump(in_array($num, $arr));

3.可变函数

  1. <?php
  2. function wages2(int $n,float $money):float
  3. {
  4. return $n * $money;
  5. }
  6. $funname = "wages2";
  7. echo "本月工资=".$funname(15,100);
  8. //输出 本月工资=1500

4.匿名函数(在php中也称为”闭包”: 可以访问父作用域中的变量)

  • 常规匿名函数
  1. <?php
  2. $getwage =function(int $n,float $money):float
  3. {
  4. return $n * $money;
  5. };
  6. //输出 本月工资=750
  7. echo "本月工资=" . $getwage(15,50);
  • 当前父作用域是全局变量
  1. <?php
  2. //当前父作用域是全局变量
  3. $dis = 250;//个税
  4. $getw = function(int $n,float $money) use($dis):float
  5. {
  6. $tap = $n * $money;
  7. return $tap>5000 ? ($tap-$dis) : $tap;
  8. };
  9. //输出 本月工资=5750
  10. echo "本月工资=" . $getw(30,200);
  • 父作用域是父函数
  1. <?php
  2. $f = function($distion){
  3. $g = function(int $n,float $money) use($distion):float
  4. {
  5. $tap = $n * $money;
  6. return $tap>500 ? ($tap-$distion) : $tap;
  7. };
  8. //将子函数以返回值的方式返回给调用者
  9. return $g;
  10. };
  11. //输出 本月工资=5700
  12. echo "本月工资=" . $f(300)(30,200);
三.函数的返回值

1.函数必须要有返回值,且函数只能返回单一的值;

2.函数的多值返回方法

  • 字符串返回
  1. <?php
  2. // 通过字符串拼装
  3. function index1():string
  4. {
  5. $status = 1;
  6. $msg = "登录成功!";
  7. return $status.$msg;
  8. }
  9. //输出 1登录成功!
  10. echo index1();
  • 数组返回
  1. <?php
  2. // 数组返回
  3. function index2():array
  4. {
  5. $array = [1,"编辑成功!"];
  6. return $array;
  7. }
  8. //输出 1===编辑成功!
  9. echo index2()[0]."===".index2()[1];
  • json格式返回
  1. <?php
  2. //json返回
  3. function index3():string
  4. {
  5. $array = ["status"=>1,"msg"=>"编辑成功!"];
  6. //json_encode():对象/数组 转 json, 成功返回 json 编码的 string ,失败返回 false
  7. return json_encode($array);
  8. }
  9. //json_decode(): son 转 对象/数组 , 当第二个参数为true返回 array ,默认是false返回object。
  10. $data = json_decode(index3(),true);
  11. //输出 array(2) { ["status"]=> int(1) ["msg"]=> string(15) "编辑成功!" }
  12. var_dump($data);
  • 序列化方式返回
  1. <?php
  2. // 序列化方式返回
  3. function index4():string
  4. {
  5. $array = ["status"=>1,"msg"=>"编辑成功!"];
  6. //serialize():对象/数组 转 序列号格式
  7. return serialize($array);
  8. }
  9. //unserialize(): 反序列化(还原)
  10. //输出 array(2) { ["status"]=> int(1) ["msg"]=> string(15) "编辑成功!" }
  11. var_dump(unserialize(index4()));
四.函数的参数

1.值参数,也是默认

  1. <?php
  2. //值参数
  3. function param(int $data):int
  4. {
  5. return $data +=10;
  6. }
  7. //输出 10
  8. echo param(10);

2.引用参数:在参数前添加取地址符&

  1. <?php
  2. function param1(int &$data):int
  3. {
  4. // 函数内部对参数的更新会实时映射到外部实际参数
  5. return $data +=10;
  6. }
  7. $val =100;
  8. //输出 110
  9. echo param1($val),"<br>";
  10. //输出 110 $val值会随param1()函数返回值变化而变化,相当于取$data
  11. echo $val;

3.默认参数

  1. <?php
  2. //默认参数:凡是有默认值的参数,必须写到没有默认值参数的后面
  3. function param2(float $money,string $name="admin" ):string
  4. {
  5. return "这几天".$name."收获".$money."元";
  6. }
  7. echo param2(120); //$name为默认参数,即没传参数则使用“admin”
  8. //输出 这几天admin收获120元

4.剩余参数

  1. <?php
  2. //调用的参数不固定
  3. function param_sum(...$day):string
  4. {
  5. $str = "";
  6. for($i=0;$i<count($day);$i++){
  7. $str .= $day[$i].";";
  8. }
  9. return $str;
  10. }
  11. $arr =["星期一","星期二","星期三","星期四"];
  12. echo param_sum(...$arr);
  13. //输出 星期一;星期二;星期三;星期四;
五.函数的命名空间
  1. <?php
  2. namespace ns1 {
  3. function index($name)
  4. {
  5. return "ns1中的index的" . $name;
  6. }
  7. }
  8. namespace ns2 {
  9. function index($username)
  10. {
  11. $res = \ns1\index($username);
  12. return "ns2中的index的调用".$res;
  13. }
  14. }
  15. // 全局空间: 匿名空间,默认空间
  16. namespace {
  17. echo ns2\index("admin");
  18. // 输出 ns2中的index的调用ns1中的index的admin
  19. }

总结

对回调函数,异步的流程使用不太清楚

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