目录
前言
一、函数的定义和调用
1.1 初识函数
1.1.1 函数分类
1.1.2 自定义函数
1.1.3 return关键字
1.2 参数设置
1.2.1 无参函数
1.2.2 按值传递参数
1.2.3 引用传参
1.2.4 设置参数默认值
1.2.5 指定参数类型(弱)
1.3 变量的作用域
1.3.1 变量分类
1.3.2 全局变量的使用
1.3.3 global关键字
二、函数的嵌套调用
2.1 嵌套调用
2.2 递归调用
三、函数的高级应用
3.1 静态变量
3.2 可变函数
3.3 回调函数
3.4 匿名函数
四、PHP的内置函数
4.1 字符串函数
4.2 数学函数
4.3 时间日期函数
总结
嗨!我是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 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关键字来实现。
例如:
嵌套调用:指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其他函数的方式称为嵌套调用。
1、所谓嵌套函数,就是在函数中定义并调用其他函数。
2、嵌套函数可以将一个复杂的功能分解成多个子函数,再通过调用的方式结合起来,有利于提高函数的可读性。
举例:班主任老师要计算每个学生语文和数学平均分,其实现思路是首先编写一个函数用于计算学生的语文和数学的总分,然后再编写一个函数用于实现学生的平均分。
递归调用:是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程,这种函数成为递归函数。
递归调用是一种解决方案,一种逻辑思想,将一个大工作分为逐渐减小的小工作,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
举例:求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 值相乘,得到一个乘积。最后输出乘积即可。
用递归的方法:
";
echo "3 的阶乘为: " .Fact(3)."
";
echo "4 的阶乘为: " .Fact(4)."
";
echo "10 的阶乘为: " .Fact(10);
?>
所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。
通过在函数中使用静态变量可以轻松得到一个函数被访问的次数。
举例:
1.局部变量的例子:
";
echo num();
?>
说明:第1次调用函数num()输出1,第2次调用函数num()会输出1,不论调用多少次num()函数,输出都会为1。
2.静态变量的例子:
";
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()可以接受用户自定义的回调函数作为参数。就是把函数作为参数传入进另一个函数中使用。
例如:
";
}
call_user_func('qwe', "张三",'18');
call_user_func('qwe', "李四",'24');
?>
匿名函数:就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题。
例如:
匿名函数仍然是函数,可以传入参数,直接把赋数赋值给变量,调用变量即为调用函数。
匿名函数中使用外部的变量,需要通过use关键字实现。use关键字后圆括号“()” 中的内容即为要使用的外部变量列表,多个变量之间使用英文逗号“,”分隔即可。
例如:
除此之外,匿名函数还可以作为函数的参数传递,实现回调函数。
例如:
字符串函数是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函数的世界中探索出属于自己的奇妙旅程!