PHP基础之函数

函数的基本概念
函数function是一种语法结构,用于实现某种功能的代码块,从而实现函数的复用。(一个功能一个函数)
函数基本语法

function 函数名(参数){
      //函数体
     //返回值rerurn结果
}

·注意参数可以省略
函数调用特点
在执行阶段遇到函数名才会调用,而不是在编译阶段。函数的调用可以在函数之前。




上面种方式都输出hello world
函数的命名规范
1.用字母、数字、下划线组成,但是不能以数字开头。
2.驼峰命名法 :除左边第一个单首字母外,后面单词全部大写:如mySHE;
3.下划线命名法:单词之间都是通过下划线来连接的,单词都是小写 my_she;
注意:在一个脚本周期里不允许出现2个同名的函数。(通常在一个系统开放中也不会定义2个同名的函数)

参数详解
函数参数有2种
1.形参:形式参数,不具有实际意义的参数,是函数定义时使用的参数。
2.实参:实际参数,具有实际意义的参数,是函数调用时使用的参数。形参是实参的载体。
实参通常是需要调用函数内部参与计算的,那么需要在函数内部需要找到实际数据所在位置才可以找到数据本身,需要实际调用的时候,将数据以实参的形式传递给形参(给形参赋值),从而实现函数内部可以用到外部的值




3.默认值
默认值:default value:指的是形式参数的默认值,在函数定义的时候,给形参一个初始值,如果通过实际调用传入的参数没有提高,那么形参就会使用定义时的值来进入函数内部参与运算。
默认值通常用在一些一定会有蘑菇数据参与,但是通常是某个我们知道的值。


输出3
注意
1.默认值的定义是放在最右边的(可以多个),不能左边形参有默认值而右边没有。
2.函数外部的变量名可以与函数定义的形参同名,他们之间没有任何关系。如果多个函数使用同样的形参名字也不会冲突

引用传递
1.实参在调用时会把值赋值给形参,实际上就是一种简单的值传递。将实参的结果取出来赋值给形参,形参与外部实际传入的参数本身没有任何关联的关系,只是结果一样。
2.有的时候希望在函数内部拿到函数外部的数据时能够由函数内部改变。那么就要明确函数,函数才会在调用的时候去主动获取外部数据的内存地址,这种方式叫做引用传值
3.基本定义语法

function 函数名(参数一,参数二){
   //函数体
 }

在调用参数时必须给引用传值参数的位置传入实际的参数,而且参数本身必须是变量。

',$a2,'
'; } $a1=1; $a2=2; display($a1,$a2); echo $a1,'
',$a2; ?>

输出
PHP基础之函数_第1张图片
说明:用了&符号之后,a2采用的是取地址,改变了函数外部a2的值。而a1取的仅仅只是值,所以不改变函数外部a1的值
注意:引用传值实参时必须传入变量,而不是数值
作用域
定义:变量(常量)能够被访问的区域。
在PHP中作用域严格来说分为2种,但是在PHP内部还定义了一种严格意义之外的变量,所以一共有3种。
1.全局变量:用户普通定义的变量(在函数外部定义的变量)
只允许在全局空间使用,理论上函数内部不可用。
脚本周期:直到允许脚本结束(即最后一行代码执行完毕)
2.局部变量:在函数内部定义的变量
只允许在函数内部使用
函数周期:函数执行结束(函数是在栈区中开辟独立空间)
3.超全局变量:系统定义的变量(预定义变量:如:、$_SERVER,$_POST).
没有访问限制(函数内外部都可以访问)
4.那在函数内部如何访问全局变量呢?
(通过参数传值或者引用传值)
global关键字:在函数内部定义的一种方式。
(1)、如果使用使用global定义的变量名在外部存在(全局变量),那么系统在函数内部的变量直接指向外部全局变量的内存空间(就是他同一变量,不同名字)。
(2)、如果使用使用global定义的变量名在外部不存在(全局变量),那么系统会自动在全局空间定义一个与局部变量同名的全局变量
(3)、本质是:在函数内外部,对一个同名变量使用同一块地址存储数据,实现共同拥有。
(4)、基本语法
global 变量名 //不能直接赋值

global $a;
$a='1';

虽然以上方式可以实现局部与内部的互相访问,但是一般不会这么做。如果要实现该功能一般使用参数(也可以使用常量,define定义常量)

静态变量
静态变量:在函数内部定义,使用static关键字修饰,实现跨函数共享数据的变量。
函数运行结束时所有的局部变量都会被清空,如果重新运行函数,则所以的局部变量重新初始化。
基本语法:
function 函数名(){
//定义变量
static 变量名 = 值 //通常在定义时直接赋值
}
作用:跨函数共享数据(跨函数是指同一个函数被多次调用)。
== 静态变量的原理:系统在编译的时候就对静态变量进行赋值;函数在调用的时候,会自动跳过static关键字这一行。(如下面的代码)==
PHP基础之函数_第2张图片
输出
PHP基础之函数_第3张图片

静态变量的使用:
1.为了统计函数被调用的次数。
2.为了统筹函数多次调用得到的不同结果(递归思想)

可变函数
定义:当前有一个变量的值刚好是一个函数的名字,那么就可以使用“函数名+()”来充当函数名来使用。

 

输出 1

可变函数在系统使用的过程中还是比较多的,特别是使用很多系统函数时,需要用户在外部定义一个自定义函数,但是是需要传入到系统内部使用。
PHP基础之函数_第4张图片

匿名函数
基本概念:没有名字的函数。
基本语法:
$变量名= function(){
//函数体
}

 

闭包
闭包:closure,一词源于以下2种的结和:要执行的代码块和作用域。
简单来说:函数内部包含一些局部变量(要执行的代码块)在函数执行之后没有被释放。是因为在函数的内部还有对应的函数在使用(内部函数通常是匿名函数)
PHP基础之函数_第5张图片
如何证明函数的局部变量在函数使用完之后没有被释放?
1.使用内部匿名函数
2.匿名函数使用变量use
3.匿名函数被返回给外部使用
PHP基础之函数_第6张图片
伪类型
伪类型:假类型,实际上在php中不存在的类型,但是通过伪类型可以帮助程序员去更好的查看操作手册从而更方便学习。
伪类型主要有2种(三大类八小类之外)
1.mixed混合的,可以是php中多种的数据类型。
2.number数值的,可以是任意的数值类型(整型或者浮点型)
有关数学的函数
1.max():指定参数中最大的值
2.min():指定参数中最小的值
3.rand():得到一个指定区间的随机数
4.mt_rand():与rand()一样,只是底层结构不一样,效率比rand高(推荐使用)
5.round():四舍五入。
6.ceil():向上取整
7.floor():向下取整
8.pow():求指定数字的指定指出数结果(如pow(2,8)=2^8)
9.abs():求绝对值。
10.sqrt():求平方根
有关函数的函数
1.function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码更加安全)
2.func_get_arg():在自定义函数中去获取指定数值对于的参数
3.func_get_args():在自定义函数中获取所以的参数(数组)
4.func_num_args():获取当前自定义的函数的参数数量。


输出
string(1) “2”
array(4) {
[0]=> int(1)
[1]=> string(1) “2”
[2]=> int(3)
[3]=> int(4)
}
int(4)

你可能感兴趣的:(PHP入门)