php笔记之函数

函数初步

基本概念

函数是模块化程序的产物,在实际开发过程中,我们会将一个项目划分为各个大的功能模块,通时将大的功能模块发为小的功能,在使用函数这个最小的功能(一个动作)实现

从代码上看,函数就是使用{},将完成摸个功能的代码括起来(封装),在使用function关键字,为这段代码设置一个名字,这个名字就是函数名,函数名后必须有(),这个()表示函数只能被调用

申明语法

语法:

function funName(参数列表){
      函数体
      【return 值】          
}

示例:

 调用语法:

语法:

funName(实参列表);

示例:

 函数名

php函数名是不区分大小写,函数名的命名规则和变量名相同,只能包含字母、数字、下划线。而且以字母下划线开头

可变函数

如果$a的值是另一个变量的名,那么可以适应$$a来访问另一个变量的值

如果$a变量的值是另一个函数名,那么可以使用这个变量来访问函数

示例:

 示例:

 函数体

完成某一段功能的代码段

return语句

在我们函数完成一些功能时,又是会将函数计算的数据,传递出来。此时可以使用return

提示:

程序是用于处理西湖局,函数所处理的数据有两个方向

其一,从内而外使用return

其二,从外而内 使用实参和形参

函数内部可以有多个return 只要遇到一个return就会中断函数的执行

函数内也可以省略return语句

匿名函数

没有名字的函数就是匿名函数,业务称之为闭包函数

提示:

js中的函数可以自调用,但是php中的函数没有办法自调用

php中的匿名函数,可以赋值一个变量,还可以用于某个函数的参数

示例:将匿名函数赋值给变量,通过这个变量可以调用匿名函数

 回调函数 callback

我们定义一个函数很多的时候是为了自己使用,但是在开发过程中,我们在其他热的函数,或系统函数时,这些函数需要参数,而有些参数要求你传递的一个函数。作为传参的函数就是回调函数

示例:

匿名函数作为回调函数(参数)传递

 函数参数

函数定义时的参数是形参

形参是被动的接收数据

形参是对内存有效,对于外部是不可见的

示例:

 实参

函数调用是的参数就是实参

主动向函数内部传递实际的数据

提示:

形参余实参让函数更加具有通用性

形参的默认值

php中在定义函数时候可以为形参赋值一个值,这个值就是形参的默认值

在调用函数时,如果没有为具有默认值的形参传递数据,那么形参使用的就是默认值,如果有为具有默认值的形参传递数据,那么这个形参使用实际传递过来的数据,一般具有默认值的形参位于,形参列表的最后

示例:

 形参的引用传值

php中函数的实参与形参之间也是一种赋值方法,默认是

 

 php中可以下形参前加&符号,将实参和形参之间默认的复制传值,更改为引用传值

 伪类型(函数)

PHP语言本身提供了8种数据类型。但是在使用手册中我们会遇到另外几中:

       mixed           表示类型不确定

       callback        表示函数

       scalar           如果是int、float、string、bool

 相关函数(系统函数)

func_get_args();

用于获取实参,并以数组的形式返回

func_get_arg(inf);

用于获取ind下标指定的实参

func_num_args();

用于获取实参的个数

示例:

 示例:应用

 示例:

 

说明:

       …$变量名           用于将实参以数组元素的形式保存在这个变量中

函数运行的内存原理

作用域

在php中函数是用于封装某一功能的代码段,函数在对代码进行封装会有一些影响,php中分为两种作用域,全局作用域和局部作用域

全局作用域和全局作用域

在函数外部的定义的变量,其作用域就是群居作用域,变量就是全局变量

示例:

 

 局部作用域和局部变量

 在函数内部定义的变量,器作用域就是局部作用域,这个变量就是局部变量

示例:

 提示:默认php中有很清晰的作用域,外部只能访问外部的,内部只能访问内部的

global关键字

虽然php默认作用很清晰,但是有时确定会外部或内部访问外部。如何解决?

通过默认参数的传址方式

在形参前使用&,可以达到内部访问外部

 

$GLOBALS

$_GET\$_POST...$GLOBALS,超全局变量

 示例:

 提示:

以上两种变通的方式都只是实现了内部访问外部

global关键字

语法:

global  变量名

说明:

在函数内部建议一个与函数外部同名的变量的引用,如果外部有这样的同名变量,会在外部创建一个同名的变量

 常量的作用域

常量没有作用域限制,一个脚本的常量,在任何位置都可以访问

预定义变量(超全局变量)

超全局变量也不受作用域的限制

变量的生命周期

作用域和生命周期

作用域表示的是一个变量的作用空间范围

生命周期表示的是一个变量的作用时间范围

全局变量的生命周期

全局变量 生命周期是从脚本执行到脚本局结束

局部变量的生命周期

局部变量 生命周期是从函数执行开始到函数执行结束

静态变量

在函数内部使用static申明的变量,就是静态变量

示例:

 原理

静态变量在函数多次被调用时,只会被初始化一次,并且静态变量的值并不会随着函数执行后空间的销毁为而被销毁

在函数下一次调用时,任然可以访问其值

 提示:

静态变量的使用场景,如果想在同一个函数多次调用时,共享一份数据,那么就使用静态变量

系统函数

日期时间函数

time()

说明:

用于获取当前时间的时间戳,单位是秒,时间戳就是从时间原点至现在的一个秒数

时间原点,计算机中规定从1970年1月1日0时0分0面那一刻为时间原点

 microtime();

date();

语法:

date(format【,time】);

 说明:

用于格式化时间信息

time表示所要格式化的时间戳,如果省略表示对当前时间进行格式化

format 用于格式化时间的字符串

Y        表示4位的年份
m           月份,有前导0
d            表示,日期
H            表示24小时机制的小时数
i             表示分钟数
s            表示秒数

mktime()

语法:

mktime(时,分,秒,月,日,年);

说明:

用于获取指定时间的一个时间戳

 strtotime()

语法:

strtotime(string)

说明:

讲一个字符的形式描述的时间信息转换为时间戳

递归

函数自己调用自己就是递归

递归函数解决问题的特点:完成一个需求有多个步骤,但完成每一步所要实现的代码是十分相似的,只有函数所传递的参数不同而已

示例:

 The end

猜你喜欢

转载自www.cnblogs.com/zhangcheng94/p/12202481.html
今日推荐