1.自定义函数
(1).函数以function开始;
(2).function后面接空格,空格后面接函数名;
(3).语法规定如下([]代表可有可无):
function 函数名([参数名1[=值1], ......参数名n[=值n]]){
函数中的功能体;
[return 返回值;]
}
(4).函数名与变量命名规则基本一样,但是不同的是,函数名不区分大小写;
(5).所谓参数其实就是变量;
(6).函数名后括号内的参数变量是形参;
(7).函数中的具体功能一定是用{}括起来,不像if,else等流程控制可以不用大括号;
(8).函数的返回值可有可无,若有,那么返回值后的代码均不执行,除非是有条件的返回值;
(9).函数不能被定义两次,即函数不能被重载。
2.回调函数
(1).回调函数的意义:就是在处理一个功能时,我们让这个功能自定义能力再强一些,我准许调用这个函数的时候,还可以传入一个函数配合、协助进行处理。
(2).回调函数的定义:就是在一个函数里头调用另外一个函数,在调用函数定义时,被调用的函数以形参的方式存放在调用的函数里,作为形参,在调用的函数名后的括号里只能是变量,不能在后面加括号表明身份;在函数的功能体里就可以加括号调用了(这里就用到了PHP的可变函数)。
(3).举个例子:
function diaoyong($one, $two, $func){
if(!is_callable($func)){ //检测变量是否为可调用的函数
return false;
}
echo $one + $two + $func($one, $two);
}
function beidiaoyong($a, $b){
$result = $a + $b;
return $result;
}
echo diaoyong(1, 2, 'beidiaoyong');
3.变量函数
变量函数与基本语法里的可变变量类似,例:
function demo(){
echo '1';
}
$test = 'demo';
$test();
4.匿名函数
(1).匿名函数,即没有函数名的函数,有两种方法使用匿名函数。
(2).变量函数式的匿名函数,即把一整个函数赋给一个变量,例:
$test = function($name){
echo $name;
};
$test('XXX');
(3).回调式的匿名函数,在调用的时候直接定义被调用函数,例:
function dy($one, $two, $func){
if(!is_callable($func)){
return false;
}
echo $one + $two + func($one, $two);
}
dy(1, 2, function($a, $b){
$result = $a + $b;
return $result;
});
5.内部函数
定义:内部函数,是指在函数内部又声明了一个函数,例:
function a(){
echo 'a';
function b(){
echo 'b';
}
}
a();
b();
注意:1.内部函数名不能是已存在的函数名;2.假设在函数a里定义了一个内部函数,不能调用两次函数a;3.调用内部函数b之前,要先调用a函数。
6.全局变量$GLOBALS
(1).通过$GLOBALS来读取外部变量,例:
$a = 1;
function test(){
$b = 2;
$result = $b + $GLOBALS['a'];
return $result;
}
echo test();
(2).通过$GLOBALS,在函数内修改外部变量,例:
$a = 1;
function test(){
$GLOBALS['a'] = 2;
}
test();
echo $a;
(3).通过$GLOBALS,在函数内创建全局变量,例:
function test(){
$GLOBALS['a'] = 1;
}
test();
echo $a;
(4).可用global $变量1,变量2,......,变量n声明全局变量。
7.参数的引用
参数的引用,就是将形参和实参指向同一位置,当形参在函数体内发生变化,那么实参的值也发生变化,举个例子:
$a = 1;
function test(&$n){
$n = 10;
}
test($a);
echo $a; //会发现$a的值变为10
8.递归函数
在函数体内调用函数自己,例:
$n = 5;
function test($n){
echo $n;
$n = $n - 1;
if($n > 0){
test($n);
}
}
test($n); //结果将是54321
注意:递归函数必须要有能执行完的结束条件,不然函数就会陷入死循环。
9.静态变量static
在函数内声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行,可用来计算函数被调用的次数。举个例子:
function test(){
static $a = 1;
echo $a;
$a++;
}
for($i = 0; $i < 10; $i++){
test(); //结果为123456789
}
10.系统内置函数
主要看手册
11.文件包含函数
函数 | 包含失败 |
---|---|
include | 返回一条警告,但代码继续向下执行,常用于动态包含 |
require | 发出致命错误,代码就不会继续向下执行了 |
include_once | 返回一条警告,除了原有功能外,还会做once检测,即文件不会被包含两次以上 |
require_once | 发出致命错误,除了原有功能外,还会做once检测 |
注意,少用带_once的函数,因为它会消耗更多的资源去做检测。
12.数学常用函数
函数 | 描述 | 实例 | 输入 | 输出 |
---|---|---|---|---|
abs() | 求绝对值 | $abs = abs(-4.2); //4.2 | 数字 | 绝对值数字 |
ceil() | 进一法取整 | echo ceil(9.999); // 10 | 浮点数 | 进一取整 |
floor() | 舍去法取整 | echo floor(9.999); // 9 | 浮点数 | 直接舍去小数部分 |
fmod() | 浮点数取余 | " |
两个浮点数,x>y | 浮点余数 |
pow() | 返回数的n次方 | echo pow(-1, 20); // 1 | 基础数 n次方 | 乘方值 |
round() | 浮点数四舍五入 | echo round(1.95583, 2);// 1.96 | 一个数值保留小数点后多少位,默认为0 | 舍入后的结果 |
sqrt() | 求平方根 | echo sqrt(9); //3 | 被开方的数 | 平方根 |
max() | 求最大值 | echo max(1, 3, 5, 6, 7); // 7 echo max(array(2, 4, 5)); // 5 | 多个数字或数组 | 返回其中的最大值 |
min() | 求最小值 | echo min(1, 3, 5, 6, 7); // 1 echo min(array(2, 4, 5)); // 2 | 多个数字或数组 | 返回其中的最小值 |
mt_rand() | 更好的随机数 | echo mt_rand(0,9);//n | 最小/最大,随机数 | 随机返回范围内的值 |
rand() | 随机数 | echo rand() | 最小/最大,随机数 | 随机返回范围内的值 |
pi() | 获取圆周率值 | echo pi(); // 3.1415926535898 | 无 | 获取圆周率 |
13.获取时间信息函数
(1).首先要知道时区、世界时和unix时间戳的概念:
时区:全球划分有24个时区,中国北京所在地东八区的时间为全国统一使用时间;
世界时:全球统一的记录时间标准,即格林尼治(英国某地)时间(GMT)
unix时间戳:由于电脑本身不认识时间,所以设置了一个时间方便运算,从unix纪元(1970年1月1日0时)开始到某个时间经过的秒数就叫做unix时间戳。
(2).设置时区的函数为:
date_default_timezone_get()——取地默认时区,用法如下:
echo date_default_timezone_get();
date_default_timezone_set()——设置默认时区,用法如下:
define('TIME_ZONE','Asia/shanghai'); //合法时区参考手册
date_default_timezone_set(TIME_ZONE);
echo date('Y-m-d H:i:s');
(3).time()获取当前的unix时间戳,例:
$time = time();
echo $time;
(4).可用date('Y-m-d H:i:s')显示当前日期时间(date函数里面的时间参数格式还有很多,具体使用时可以上网查)。
(5).可用getdate()获取当前系统时间,该函数会返回当前时间的详细信息的数组,可以好好利用该函数做时间信息的汇报。
(6).可用checkdate(月,日,年)判断一个输出的日期是否有效,例:
var_dump(checkdate(2,29,2020));
(7).可用mktime(时,分,秒,月,日,年)构造某天的时间戳。
(8).程序执行时间检测,可用microtime(可传入true得到浮点类型的时间),例: