1、函数的定义

 

与java相比,除了在语法上有些区别以外(弱类型),其它没有什么区别。

函数的返回值类型由return语句的表达式确定。

【思考1】如果函数内没有return语句,或者有一条没有表达式的return语句,那么函数的返回值是什么?

 

【思考2】函数的定义放在什么位置?

(1) 如果与调用函数的语句在一个文件中,放在这个文件中的任意位置都可以,保持结构完整和独立就可以。

(2)如果函数单独放在独立的php文件中,需要在使用函数前使用require或include语句把这个文件包含进来。

require functionfile.php;

【思考3】理解什么是形参,什么是实参?

 

形参必然是变量,是该函数的局部变量。实参可以是表达式,也可以是变量,但有时必须是变量(当函数参数定义为变量的引用时)。在函数调用时,会进行由实参的数据类型向形参的数据类型转换的过程(即数据类型以形参为准)

2、函数的默认参数

php不支持函数的重载(函数名相同但参数不同)

默认参数,就是当函数调用时,如果不给参数赋值,用程序员定义的默认值代替。(相当于函数重载时,参数的个数不同了)

默认参数,只能自右向左依次定义为默认参数。

 

3、函数的变长参数

变长参数,就是用数组变量(形参)来接受不确定个数的参数列表(实参)。

 

变长参数必须是最右边的参数。

…运算符,除了在用于定义变长参数为,还可以用来将数组转换为列表:

$nums = array(10,20,30,40,50);

echo sum(…$nums);

4、函数的引用参数

同c、java一样,调用函数时,形参获得实参的一个拷贝,是独立的存储空间(栈中分配)。不同的是,php中,不管是基本类型(标量类型)还是字符串、数组、类对象,都是拷贝。

要使形参和实参(必须是变量)共用存储空间,参数必须定义为引用

 

5、可变函数和匿名函数

函数也是一种类型(复合类型callable)。另两种复合类型是array和object。

因此可以将函数名(字符串)赋值给变量,通过变量来调用函数。

 

如果是给变量赋值或作为另一函数实参时,临时使用的函数,这个临时定义时,可以不给函数起名字,称为匿名函数。

 

6、变量的作用域

在程序中(函数外)定义的变量,虽然是全局变量,但函数内部还不能使用,必须先用global关键字声明。如$int1。或者使用$globals数组

也可以在函数内部定义全局变量。如$int2。

 

函数内定义的静态变量(static),意见同c、java一样,初始化值赋值后,再次调用该函数时不再初始化,保持上一次调用时该变量的值。

 

7、文件包含

一个php文件中,要引入另一个php文件的代码,可以用下面语句中的一个来将另一个php文件包含进来。所以,我们常将函数库或类代码放在独立的php文件中,需要的时候包含进来。

 

8、常用数学函数

请注意熟悉如round,ceil,floor等取整函数,max,min等统计函数,进制转换函数,sin,cos,exp等数值计算函数,m_pi,m_e等预定义常量的使用

php 5 math函数请参阅:

9、常用日期函数

php没有日期/时间函数,使用unix时间戳(1970-1-1 00:00:00以来的秒数)来记录时间。所以使用整数来表示时间。

要正确设置php的时区。

$time0 = 1583889120;

$time1 = mktime(9,30,0,3,11,2020);

$time2 = time()+24*60*60;

$time3 = strtotime(“+1 days”,time());

输出日期时间时,用date函数进行格式化。常用y-m-d h:i:s

echo date(“y-m-d h:i:s”,$time2);

格式字符串参见: