PHP基础复习:函数

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 = 5.7;y = 1.3;r = fmod(x, y);//r equals 0.5, because 4 * 1.3 + 0.5 = 5.7" 两个浮点数,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得到浮点类型的时间),例:

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空