php-函数的概念,语法,命名及参数


1、函数的基本概念

函数:function,是一种语法结构,将实现某一功能的代码(多行代码)封装到一个结构中,从而实现代码的重复利用

 

2、函数的定义语法

函数的几个关键点:

  • function关键字

  • 函数名

  • 参数(形参和实参)

  • 函数体

  • 返回值

1、基本语法:

 1 1、函数的定义:
 2 function 函数名(参数){
 3     //函数体
 4     //返回值:return 结果
 5 }
 6 //定义函数的目的:是为了实现代码的重复利用
 7 
 8 示例:
 9 <?php
10     function yb(){
11         echo 'hello yb';
12     }
13 ?>

2、函数的使用:

---通过访问函数的名字+();如果函数在定义时有参数,那么在调用的时候就必须传入对应的参数;函数是一种结构,不会自动运行,必须通过调用才可以

---函数的调用可以在函数的定义之前

1 示例:
2 <?php
3     yb();
4 ?>

3、函数执行的内存分析:

  • 读取代码进入到代码段(编译:将代码编程字节码存储到内存)

  • 根据代码逐行执行

  • 原因:编译和执行是分开的,先编译后执行

 

3、函数命名规范

  • 由字母,数字和下划线组成,不能以数字开头

  • 驼峰法

    除了左边第一个单词外,后面所有的单词都大写

  • 下划线法

    单词之间通过下划线连接,单词都是小写

  • 在一个脚本中,函数不能重名

 

4、函数的参数

1、形参

  • 形式参数,不具有实际意义的参数,是在函数定义时使用的参数

  • 形参可以有多个,用逗号隔开

2、实参

  • 实际参数,具有实际意义的参数,是在函数调用时使用的参数

  • 传入的参数,可以是变量,也可以是直接的值,或者算符计算结果

  • 实参可以比形参多(不会报错,函数内部不用而已),但不能比形参少

  • 形参是实参的载体:实参在调用时通常需要传入到函数内部参与计算,那么需要在函数内部去找到实际数据所在的位置才能找到数据本身,需要实际调用的时候,将数据以实参的形式传递给形参,给形参赋值,从而使得函数内部可以用到外部数据

1 示例:
2 <?php
3     function add($a,$b){
4         echo $a+$b;
5     }
6     $c=10;
7     add($c,20);
8 ?>
9 //结果:30

 

3、默认值

形参的默认值:在函数定义的时候,就给形参一个初始赋值,如果调用的时候,没有实参,就用默认值

【注】:默认值的定义是放在最后边的(多个),不能在左边形参有默认值,但是右边没有

函数外部定义的变量名字与函数定义的形参是没关系的

1 示例:
2 <?php
3     $num1=10;
4     function jian($a=0,$b=0){
5         echo $a-$b;
6     }
7     jian($num1);
8 ?>
9 //结果:10

 

4、引用传递

---实参在调甲寸会将值赋值给形参,那么实际上使用的方式就是一种简单的值传递:将实参(如果是变量或者常量或者其他表达式)的结果(值)取出来赋值给形参:形参与外部实际传入的参数本身没有任何关联关系:只是结果一样。

---有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫作引用传值

【注】:在传入实参的时候,必须传入变量

基本定义语法:在形参前加&

1 function 函数名(形参1,&形参2){
2     //函数体
3 }

在调用的时候,必须给引用传值的参数位置传入实际参数,而且参数本身必须是变量(变量才有指向的数据的内存地址)
 1 示例:
 2 <?php
 3     function display($a,&$b){
 4         $a=$a*$a;
 5         $b=$b*$b;
 6         echo $a,'<br/>',$b,<br/>;
 7     }
 8     $a=10;
 9     $b=5;
10     display($a,$b);
11     echo $a,'<br/>',$b,<br/>;
12 ?>
13 
14 //结果:
15 100
16 25
17 10
18 25

 

原文地址:https://www.cnblogs.com/eighty-five/p/13633443.html