
目录
🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。
💡本文由Filotimo__✍️原创,首发于CSDN📚。
📣如需转载,请事先与我联系以获得授权⚠️。
🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!
🌟我的格言:森林草木都有自己认为对的角度🌟。

欢迎来到渐进式编程之旅!在编程的世界中,函数是一种强大而重要的工具,而PHP函数更是让我们能够创造出令人惊叹的网络应用程序和网站的关键。你是否曾经想过探寻PHP函数的奇妙世界,深入了解它们的工作原理以及如何利用它们来解决编程难题?本文将带你踏上这个神奇之旅,一起揭开PHP函数的面纱,探索这个渐进式编程世界的无限可能性。
这是本篇文章的脉络图:

PHP 的真正威力源自于它的函数。在 PHP 中,提供了超过 1000 个内建的函数。
php函数分为:系统内部函数和自定义函数。
函数:封装一段用于完成特定功能的代码。
当使用一个函数时,只需关心函数的参数和返回值,就可以完成一个特定的功能。
PHP 函数准则:
1.函数的名称应该提示出它的功能
2.函数名称以字母或下划线开头(不能以数字开头)
自定义函数顾名思义,就是需要我们自己来定义的函数。我们在实际开发当中需要很多功能去反复调用,而这些反复要使用到的功能,我们可以定义成功能(函数)。
函数的定义由以下4部分组成:
1.关键字function
2.函数名
3.参数
4.函数体
格式:
- function 函数名([参数1, 参数2, ……])
- {
- 函数体……
- }
注:
1.function:在声明函数时必须使用的关键字。
2.函数名:要符合PHP的标识符,且函数名是唯一的,不区分大小写。
3.[参数1, 参数2…]:外界传递给函数的值,它是可选的,多个参数之间使用逗号“,”分隔。
4.函数体:函数定义的主体,专门用于实现特定功能的代码段。
5.返回值:需要使用return关键字将需要返回的数据传递给调用者。
函数只有被调用后,才开始真正执行函数中的代码,执行完毕,返回调用函数的位置继续向下执行。
注:
1、通过函数名实现调用,可以在函数声明之前调用,也可在之后。
2、如果函数有参数,可以通过传递参数改变函数内部代码执行。
3、如果函数有返回值,当函数执行完毕后,函数名可以当作保存值的变量使用。
在大部分编程语言中,return关键字可以将函数的执行结果返回,PHP中return的用法也大同小异,对初学者来说,掌握PHP中return的用法也是学习PHP的一个开始。
首先,它的意思就是返回,return()是语言结构而不是函数。 它的作用是将函数的值传递给调用者,同时终止函数。它只有一个返回值。
注意:如果执行了return,则return语句后面的内容将不会被执了。
例如:
- function demo(){
- return "111111";
- echo "3333";
- return "222222";
- }
- echo demo();
- ?>
输出结果:

适用于不需要提供任何的数据即可以完成指定功能的情况。
例如:
- function shout()
- {
- return 'come on';
- }
- echo shout();// 输出结果:come on
PHP默认支持按值传递参数,按此种方式定义的函数,在函数内部可以随意对用户传递的参数进行操作。
例如:
- // 方式一
- echo add(5, 7);
- // 方式二
- $x = 5;
- $y = 7;
- echo add($x, $y);
- function add($a, $b)
- {
- $a = $a + $b;
- return $a;
- }
注意:默认值必须是常量表达式,不能是变量。如果函数有多个参数,可以为多个参数指定
默认值。但是,带默认值的参数只能位于参数列表的最后,即一个默认值参数的右边不能出
现没有指定参数值的参数。
例如:
- function setPoint($x,$z,$y=0){
- echo "{".$x.",".$y.",".$z."}";
- }
- setPoint(5,90);
在开发中,若需要函数修改它的参数值,则需通过函数参数的引用传递。实现方式只需在参数前添加“&”符号即可。
例如:
- $var = 'food';
- extra($var);
- // 输出结果:food and some extra
- echo $var;
- function extra(&$str)
- {
- $str .= ' and some extra';
- }
函数参数在设置时,还可以为其指定默认值,也就是可选参数。当调用者未传递该参数时,函数将使用默认值进行操作。
例如:
- function say($p, $con = 'say "Hello"')
- {
- return "$p $con";
- }
- // 输出结果:Tom say "Hello"
- echo say('Tom');
在PHP 7.0及以上的版本后,在自定义函数时,可以指定参数具体是哪种数据类型。
当用户调用函数时,如果传递的参数不是int类型,程序会将其强制的转换为int型后,再进行操作,这种方式称为弱类型参数设置。
例如:
- function sum1(int $a, int $b)
- {
- return $a + $b;
- }
- echo sum1(2.6, 3.8); // 输出结果:5
除此之外,还可以将其设置为强类型的参数,即当用户传递的参数类型不符合函数的定义,程序会报错提醒。
例如:
- declare(strict_types = 1);//是php7引入的严格类型检查模式的指定语法
- function sum2(int $a, int $b)
- {
- return $a + $b;
- }
- echo sum2(2.6, 3.8); // 输出结果:Fatal error: ......
变量只有在其作用范围内才可以被使用,这个作用范围称为变量的作用域。
1.在函数中定义的变量称为局部变量
2.在函数外定义的变量称为全局变量
示例:
- function test()
- {
- $sum = 36; // 局部变量
- return $sum;
- }
- $sum = 0; // 全局变量
- echo test(); // 输出结果:36
- echo $sum; // 输出结果:0
在函数中可以通过参数传递,global关键字和超全局变量$GLOBALS[‘x’]使用全局变量。
1.通过global关键字使用全局变量:
- $x=100;
- function test(){
- global $x;$y=10;
- return $x+$y;
- }
- echo test();//110
2.通过超全局变量$GLOBALS[‘x’]使用全局变量:
- $x=100;
- function test(){
- $y=10;
- return $GLOBALS['x']+$y;
- }
- echo test();//110
我们经常会遇到一种情况,在函数外部声明了一个全局变量后,我们想在函数内部访问或者修改这一全局变量,这里我们就需要使用一个叫global的关键字来实现。
global作用:在函数内创建一个局部变量,使用global关键字使其成为全局变量的同名引用。我们需要借助global关键字来实现。
例如:
- $var = '1';//全局变量
- function foo(){
- global $var;//在函数内创建一个局部变量,使用global关键字使其成为全局变量的同名引用
- $var = '2';
- }
- foo();
- echo $var;//2
- ?>
嵌套调用:指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其他函数的方式称为嵌套调用。
1、所谓嵌套函数,就是在函数中定义并调用其他函数。
2、嵌套函数可以将一个复杂的功能分解成多个子函数,再通过调用的方式结合起来,有利于提高函数的可读性。
举例:班主任老师要计算每个学生语文和数学平均分,其实现思路是首先编写一个函数用于计算学生的语文和数学的总分,然后再编写一个函数用于实现学生的平均分。
- function sum($yuwen,$shuxue){
- $sun=$yuwen+$shuxue;
- return $sun;
- }
- function avg($yuwen,$shuxue){
- $avg=sum($yuwen,$shuxue)/2;
- return $avg;
- }
- echo avg(50,20);
- ?>
递归调用:是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程,这种函数成为递归函数。
递归调用是一种解决方案,一种逻辑思想,将一个大工作分为逐渐减小的小工作,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
举例:求n的阶乘,计算公式为1×2×3×…×n。如4的阶乘等于1×2×3×4=24。
用for循环的方法思路:因为求n的阶乘,就是求1乘以2乘以3...一直乘到n的乘积。所以for循环的初始条件可设置为 i = 1,限制条件可以是 i <= n 或者 i < n+1。 然后循环体中的就是乘法运算了,将每次循环的 i 值相乘,得到一个乘积。最后输出乘积即可。
用递归的方法:
- function Fact($n) {
- $sum=1;
- if($n <= 1){
- return 1;
- }else{
- $sum = $n * fact($n-1);
- return $sum;
- }
- }
- echo "2 的阶乘为: " .Fact(2)."
"; - echo "3 的阶乘为: " .Fact(3)."
"; - echo "4 的阶乘为: " .Fact(4)."
"; - echo "10 的阶乘为: " .Fact(10);
- ?>
所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。
通过在函数中使用静态变量可以轻松得到一个函数被访问的次数。
举例:
1.局部变量的例子:
- function num()
- {
- $i = 1;
- echo $i;
- ++$i;
- }
- echo num();
- echo "
"; - echo num();
- ?>

说明:第1次调用函数num()输出1,第2次调用函数num()会输出1,不论调用多少次num()函数,输出都会为1。
2.静态变量的例子:
- function num()
- {
- static $i = 1;
- echo $i;
- ++$i;
- }
- echo num();
- echo "
"; - echo num();
- ?>

说明:第1次调用函数num()输出1,第2次调用函数num()会输出2,依次类推…
可变函数:可变变量,它的实现是在一个变量前添加一个“$”符号,就变成了另外一个变量。 可变函数的实现就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后PHP就寻找与变量值同名的函数,并且尝试执行它。(可变函数就是将定义好的函数名赋值给一个变量,然后通过这个变量来调用。)
例如:
- //变量函数的用法:
- function demo(){
- echo "天王盖地虎! ";
- }
- function demo1(){
- echo "宝塔镇河妖! ";
- }
- $de='demo'; //将demo函数名赋给变量$de;
- echo $de();//调用该变量名加();
- $ee='demo1';//将demo1函数名赋给变量$ee;
- echo $ee();
可变函数的实现就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后
PHP就寻找与变量值同名的函数,并且尝试执行它。
回调函数(callback):指的就是具有callable类型的函数,一般用作参数的传递。如PHP内置函数call_user_func()可以接受用户自定义的回调函数作为参数。就是把函数作为参数传入进另一个函数中使用。
例如:
- function qwe($name,$age){
- echo "我叫$name 我$age 岁了
"; - }
- call_user_func('qwe', "张三",'18');
- call_user_func('qwe', "李四",'24');
- ?>

匿名函数:就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题。
例如:
- $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. strlen($string): 返回字符串的长度(字符数)。
例如:strlen("Hello") 返回 5,因为 "Hello" 包含 5 个字符。
2. strpos($haystack, $needle): 在字符串中查找指定子字符串的位置,并返回第一次出现的索引位置。
例如:strpos("Hello, world!", "world") 返回 7,因为 "world" 第一次出现在第 7 个位置。
3. strrpos($haystack, $needle): 与 strpos() 类似,但是从字符串的末尾开始查找指定子字符串的位置,并返回最后一次出现的索引位置。
例如:strrpos("Hello, world!", "o") 返回 8,因为 "o" 最后一次出现在第 8 个位置。
4. str_replace($search, $replace, $string): 在字符串中查找指定的子字符串,并将其替换为另一个字符串。
例如:str_replace("World", "Universe", "Hello, World!") 返回 "Hello, Universe!"。
5. substr($string, $start, $length): 返回字符串的子串,从指定的起始位置开始,并可选择指定长度。
例如:substr("Hello, world!", 7, 5) 返回 "world",因为从第 7 个位置开始的 5 个字符是 "world"。
6. explode($delimiter, $string): 将字符串根据指定的分隔符拆分为数组。
例如:explode(",", "apple,banana,orange") 返回 ["apple", "banana", "orange"]。
7. implode($glue, $array): 将数组中的元素连接成一个字符串,使用指定的粘合剂(分隔符)。
例如:implode(", ", ["apple", "banana", "orange"]) 返回 "apple, banana, orange"。
8. trim($string): 去除字符串两边的空格和其他特定字符。
例如:trim(" Hello ") 返回 "Hello",因为两边的空格被去除了。
9. str_repeat($string, $times): 将字符串重复指定次数。
例如:str_repeat("Hello", 3) 返回 "HelloHelloHello"。
10. strcmp($str1, $str2): 比较两个字符串的大小。返回一个整数值,如果两个字符串相等则返回 0,如果第一个字符串小于第二个字符串则返回负数,如果第一个字符串大于第二个字符串则返回正数。
例如:strcmp("apple", "banana") 返回一个负数。
为了方便开发人员处理程序中的数学运算,PHP内置了一系列的数学函数,用于获取最大值、最小值、生成随机数等常见的数学运算。下面是一些常用的PHP数学函数及其功能说明:
1. abs($number): 返回给定数的绝对值。
例如,abs(-5)返回5。
2. ceil($number): 向上取整,返回大于或等于给定数的最小整数。
例如,ceil(4.2)返回5。
3. floor($number): 向下取整,返回小于或等于给定数的最大整数。
例如,floor(4.8)返回4。
4. fmod($number, $divisor): 返回给定数除以除数的余数。
例如,fmod(7, 3) 返回1,因为7除以3的余数是1。
5. is_nan($number): 判断给定值是否为NaN(Not a Number)。如果给定的值不是数字,则返回true,否则返回false。
例如,is_nan(sqrt(-1)) 返回true,因为对负数的开方结果是NaN。
6. max($number1, $number2, ...): 返回给定数中的最大值。
例如,max(5, 8, 3)返回8。
7. min($number1, $number2, ...): 返回给定数中的最小值。
例如,min(5, 8, 3)返回3。
8. pi(): 返回圆周率 π 的近似值。
例如,pi()返回3.1415926535898。
9. pow($base, $exponent): 返回给定基数的指定次幂。
例如,pow(2, 3) 返回8,因为2的3次幂是8。
10. sqrt($number): 返回给定数的平方根。
例如,sqrt(16) 返回4,因为4的平方是16。
11. round($number, $precision): 对给定数进行四舍五入取整。可选择指定小数点精度。
例如,round(3.14159, 2) 返回3.14,保留两位小数。
12. rand($min, $max): 返回指定范围内的一个随机整数。
例如,rand(1, 10) 返回1到10之间的一个随机整数。
在使用PHP开发Web应用程序时,经常会涉及日期和时间管理。 例如倒计时、用户登录时间、新闻发布时间、购买商品时下订单的时间等。 为此,PHP提供了内置的日期和时间处理函数,满足开发中的各种需求。下面是一些常用的PHP时间日期函数及其功能说明:
1.
time()函数返回当前的Unix时间戳,即从1970年1月1日起经过的秒数。它通常被用来获取程序的执行时间或生成时间戳。
2.
date($format, $timestamp)函数将给定的时间戳格式化为指定的日期字符串。format是日期格式化字符串,format是日期格式化字符串,timestamp是可选的时间戳,默认为当前时间。例如,
date('Y-m-d H:i:s')将返回当前时间的年份、月份、日期、小时、分钟和秒数。
3.
mktime($hour, $minute, $second, $month, $day, $year)函数根据给定的小时、分钟、秒、月、日和年返回一个日期的Unix时间戳。它常用于构建特定的日期和时间。例如,
mktime(0, 0, 0, 1, 1, 2022)返回2022年1月1日的时间戳。
4.
strtotime($time, $now)函数将日期时间字符串转换为Unix时间戳。time是要转换的字符串,time是要转换的字符串,now是可选的基准时间,默认为当前时间。它能够处理各种格式的日期时间字符串,例如"2022-01-01"、“next Monday”、"tomorrow"等。
5.
microtime($get_as_float)函数返回当前的Unix时间戳和微秒数。$get_as_float参数是可选的,如果设置为true,则返回浮点数形式的时间戳。这个函数通常用于测量代码的执行时间。
在本篇博客中,我们深入探索了PHP函数的世界,体验了一段渐进式的编程之旅。我们从基础开始,了解了什么是PHP函数以及如何定义和调用它们。我们探讨了不同类型的函数,包括内置函数、自定义函数以及匿名函数。通过实际示例,我们学习了如何使用这些函数来处理数据、实现特定功能和构建可扩展的应用程序。
感谢您跟随我的渐进式编程之旅,希望这篇博客为您带来了有益的知识和启发。祝您在PHP函数的世界中探索出属于自己的奇妙旅程!