php函数基础(第三章)

时间:2024-04-04 08:37:29

一、php函数

a)函数的基本语法

  1. 关键字function
  2. 函数名functionName
  3. 参数
  4. 函数体
function 函数名([参数1, 参数2, ……])
{
    函数体……
}

b)各部分说明

  • List itemfunction:在声明函数时必须使用的关键字
  • function:在声明函数时必须使用的关键字
  • [参数1, 参数2…]:外界传递给函数的值,它是可选的,多个参数之间使用逗号“,”分隔。
  • 函数体:函数定义的主体,专门用于实现特定功能的代码段。
  • 返回值:需要使用return关键字将需要返回的数据传递给调用者。

c)参数设置

1、对于函数来说,参数的不同设置,决定了其调用和使用方式。

function shout()
{
    return 'come on';
}
echo shout();// 输出结果:come on
2、PHP默认支持按值传递参数,按此种方式定义的函数,在函数内部可以随意对用户传递的参数进行操作。

// 方式一
echo add(5, 7);
// 方式二
$x = 5;
y=7;echoadd(y = 7; echo add(x, $y);

———————————————————————————————————————————————————
function add($a, $b)
{
$a = $a + $b;
return $a;
}

3、在开发中,若需要函数修改它的参数值,则需通过函数参数的引用传递。实现方式只需在参数前添加“&”符号即可。

function say($p, $con = 'say "Hello"')
{
    return "$p $con";
}
—————————————————————————————————————————————————————————————
// 输出结果:Tom say "Hello"
echo say('Tom');
注意:当使用默认参数时,默认参数必须放在非默认参数的右侧,否则函数可能出错。

二、变量

a)变量的作用域
1.在函数中定义的变量称为局部变量
2、在函数外定义的变量称为全局变量

function test()
{
    $sum = 36; 	// 局部变量
    return $sum;
}
$sum = 0; 	// 全局变量
echo test();   	// 输出结果:36
echo $sum;          	// 输出结果:0

b)函数的嵌套调用

1、函数的嵌套调用:指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其他函数的方式称为嵌套调用。

举例:班主任老师要计算每个学生语文和数学平均分,其实现思路是首先编写一个函数用于计算学生的语文和数学的总分,然后再编写一个函数用于实现学生的平均分。

2、递归调用:是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程,这种函数成为递归函数。

举例:求n的阶乘,计算公式为1×2×3×…×n。如4的阶乘等于1×2×3×4=24。

c)静态变量
第1次调用函数num()输出1
第2次调用函数num()会输出1
依次类推…

function num()
{
    $i = 1;
    echo $i;
    ++$i;
}

第1次调用函数num()输出1
第2次调用函数num()会输出2
依次类推…

function num()
{
    static $i = 1;
    echo $i;
    ++$i;
}

d)变量的作用域
php函数基础(第三章)

e)可变函数
可变函数:可变变量,它的实现是在一个变量前添加一个“$”符号,就变成了另外一个变量。同理,可变函数的实现就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后PHP就寻找与变量值同名的函数,并且尝试执行它。

f)回调函数
回调函数(callback):指的就是具有callable类型的函数,一般用作参数的传递。如PHP内置函数call_user_func()可以接受用户自定义的回调函数作为参数。

g)匿名函数
匿名函数:就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题。

$sum = function($a, $b) {	// 定义匿名函数
    return $a + $b;
};
echo $sum(100, 200);	// 输出结果:300

匿名函数中使用外部的变量,需要通过use关键字实现。use关键字后圆括号“()”中的内容即为要使用的外部变量列表,多个变量之间使用英文逗号“,”分隔即可。

$c = 100;
$sum = function($a, $b) use($c) {
    return $a + $b + $c;
};
echo $sum(100, 200);  	// 输出结果:400

除此之外,匿名函数还可以作为函数的参数传递,实现回调函数。

function calculate($a, $b, $func)
{
    return $func($a, $b);
}
echo calculate(100, 200, function($a, $b) { 	// 输出结果:300
    return $a + $b;
});
echo calculate(100, 200, function($a, $b) { 	// 输出结果:20000
    return $a * $b;
});

三、PHP的内置函数

1、)字符串函数
字符串函数是PHP用来操作字符串的内置函数,在实际开发中有着非常重要的作用

php函数基础(第三章)
a)字符串函数——截取给定路径中的字符串

$url = 'C:\web\apache2.4\htdocs\cat.jpg';
$pos = strrpos($url, '\\');
// 截取文件名称,输出结果:cat.jpg
echo substr($url, $pos + 1);
// 截取文件所在的路径,输出结果:C:\web\apache2.4\htdocs
echo substr($url, 0, $pos);

strrpos()函数用于在KaTeX parse error: Expected 'EOF', got '\”' at position 8: url中获取“\̲”̲最后一次出现的位置pos。
substr()函数的第1个参数表示待截取的字符串,第2个参数表示开始截取的位置,非负数表示从字符串指定位置处截取,从0开始;负数表示从字符串尾部开始。第3个参数表示截取的长度。

b)字符串函数——替换指定位数的字符
替换指定位数的字符,在开发也是很常见的功能。例如,在各种抽奖环节中,为了保证用户的隐私,出现的手机号一般使用“*”将第4至7位的数字进行覆盖。

$tel = '18810881888';		 // 随意输入一串数字作为手机号
$len = 4; 			// 需要覆盖的手机号长度
$replace = str_repeat('*', $len); 	// 根据指定长度设置覆盖的字符串
echo substr_replace($tel, $replace, 3, $len);	// 输出结果: 188****1888

str_repeat()函数用于对“*”字符重复lensubstrreplace()len次。 substr_replace()函数用于对字符串tel中第3个位置开始后的len使len长度的字符使用replace进行替换。

c)字符串函数——过滤字符串中的空白字符
程序开发中,去除字符串中的空白字符有时是必不可少的。

$str = '   These are a few words :) ...   ';
echo '原字符串:' . $str . '<br>';
echo '去空白后的字符串:' . trim($str);

d)字符串函数——字符串的比较

  • 字符串的比较:一种比较运算符“”和“=”,另一种函数strcmp()
  • 区别:函数与比较运算符在使用时的区别是,字符串相等时前者的比较结果为0,后者的比较结果为true(非0)。因此读者在使用时需要注意不同方式的返回结果。
if (strcmp('ye_PHP', 'yePHP')) {
    echo 'not the same string';
} else {
    echo 'the same string';
}

strcmp()函数比较两个字符串对应的ASCII码值。
第1个参数的字符串与第2个参数的字符串相等返回0,小于返回小于0的值,大于则返回大于0的值。
因此,可以判断出上述示例的输出结果为“not the same string”。
这里是引用

2、数学函数
为了方便开发人员处理程序中的数学运算,PHP内置了一系列的数学函数,用于获取最大值、最小值、生成随机数等常见的数学运算。

函数名称 功能描述
abs() 取绝对值
ceil() 向上取最接近的整数
floor() 向下取最接近的整数
fmod() 取除法的浮点数余数
is_nan() 判断是否为合法数值
max() 取最大值
php函数基础(第三章)
函数名称 功能描述
min() 取最小值
pi() 取圆周率的值
pow() 计算x的y次方
sqrt() 取平方根
round() 对浮点数进行四舍五入
rand() 生成随机整数
php函数基础(第三章)

案例:
echo ceil(5.2);	// 输出结果:6
echo floor(7.8);	// 输出结果:7 
echo rand(1, 20);	// 随机输出1到20间的整数

3、时间日期函数
在使用PHP开发Web应用程序时,经常会涉及日期和时间管理。
例如倒计时、用户登录时间、新闻发布时间、购买商品时下订单的时间等。
为此,PHP提供了内置的日期和时间处理函数,满足开发中的各种需求。

1、概念:Unix时间戳(Unix timestamp)定义了从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,以32位二进制数表示。
Unix纪元:1970年01月01日零点也叫作Unix纪元。

php函数基础(第三章)

Unix时间戳是一种时间的表示方式,它是为了解决编程环境中时间运算的问题。

a)时间日期函数——时间戳

echo time();			// 输出结果:1487666317
echo mktime(0, 0, 0, 2, 21, 2017);	// 输出结果:1487606400
echo strtotime('2017-2-21');	// 输出结果:1487606400
echo microtime();			// 输出结果:0.04142600 1487666098
echo microtime(true);		// 输出结果:1487666098.0414
  • time()函数用于获取当前时间的Unix时间戳,
  • mktime()和strtotime()函数可将给定的日期时间转换成Unix时间戳,前者的参数分别表示“时分秒月日年”,后者可以是任意时间的字符串。
  • 函数microtime()用于获取当前Unix时间戳和微秒数,不设置参数时,返回值的形式前面一段数字表示微妙数,后面一段数字表示秒数;设置参数时,小数点前表示秒数,小数点后表示微秒数。

b)时间日期函数——格式化时间戳

echo date('Y-m-d H:i:s');		// 输出结果:2017-02-21 16:48:16
echo date('Y-m-d', 1487666317);	// 输出结果:2017-02-21
  • date()函数第1个参数表示格式化日期时间的样式
  • date()函数第2个参数表示待格式化的时间戳,省略时表示格式化当前时间戳。

表格看看就可以了↓↓↓↓↓↓↓↓

php函数基础(第三章)
php函数基础(第三章)