2023.10.17
函数
1、初识函数
function 函数名([参数1, 参数2, ……])
{
函数体……
}
function:在声明函数时必须使用的关键字
函数名:要符合PHP的标识符,且函数名是唯一的,不区分大小写
[参数1, 参数2…]:外界传递给函数的值,它是可选的,多个参数之间使用逗号“,”分隔
函数体:函数定义的主体,专门用于实现特定功能的代码段
返回值:需要使用return关键字将需要返回的数据传递给调用者
函数只有被调用后,才开始真正执行函数中的代码,执行完毕,返回调用函数的位置继续向下执行1、通过函数名实现调用,可以在函数声明之前调用,也可在之后
2、如果函数有参数,可以通过传递参数改变函数内部代码执行
3、如果函数有返回值,当函数执行完毕后,函数名可以当作保存值的变量使用
2、传参
①无参
function shout()
{
return 'hello world';
}
echo shout();
// 输出结果:hello world
②按值传参数
<?php
function add($a, $b)
{
$a = $a . $b;
return $a;
}
echo add('hello ','world')
?>
默认值:
默认值必须是常量表达式,不能是变量。如果函数有多个参数,可以为多个参数指定默认值。但是,带默认值的参数只能位于参数列表的最后,即一个默认值参数的右边不能出现没有指定参数值的参数
错误定义 | 正确定义 |
| |
③引用传参
在开发中,若需要函数修改它的参数值,则需通过函数参数的引用传递。实现方式只需在参数前添加“&”符号即可
有&符号 |
|
没有&符号 |
|
④参数类型设置
在PHP 7.0及以上的版本后,在自定义函数时,可以指定参数具体是哪种数据类型。
弱类型:
<?php
function aaa(int $a,string $b)
{
var_dump($a);
var_dump($b);
}
aaa(6.6,6.6);
?>
结果:
当用户调用函数时,如果传递的参数不是int类型,程序会将其强制的转换为int型后,再进行操作,这种方式称为弱类型参数设置。
强类型:
当用户传递的参数类型不符合函数的定义,程序会报错提醒
<?php
declare(strict_types=1);
function aaa(int $a,string $b)
{
var_dump($a);
var_dump($b);
}
aaa(6.6,6.6);
?>
结果:
3、递归调用
递归调用:是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程,这种函数成为递归函数
示例:
//计算阶乘
<?php
function Fact($n)
{
if($n <= 1)
{ return 1; }
else
{ return $n * fact($n-1); }
}
echo "10 的阶乘为: " .Fact(10);
?>
函数的高级应用
1、静态变量
所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。
示例:
<?php
function aaa()
{
static $i = 2;
echo $i;
$i*=$i;
}
function bbb()
{
$i = 0;
echo $i;
$i++;
}
aaa();
echo "\n";
aaa();
echo "\n";
bbb();
echo "\n";
bbb();
echo "\n";
bbb();
echo "\n";
aaa();
?>
结果:
2、可变函数
可变变量:它的实现是在一个变量前添加一个“$”符号,就变成了另外一个变量
示例:
<?php
$hello="world";
$world="123";
echo $$hello;
//输出结果为 123
?>
可变函数:它的实现就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后PHP就寻找与变量值同名的函数,并且尝试执行它。(可变函数就是将定义好的函数名赋值给一个变量,然后通过这个变量来调用。)
<?php
//变量函数的用法
function demo()
{echo "hello ";}
function demo1()
{echo "world! ";}
$de='demo'; //将demo函数名赋给变量$de;
echo $de();//调用该变量名加();
$ee='demo1';//将demo1函数名赋给变量$ee;
echo $ee();
//输出: hello world!
?>
3、回调函数
回调函数(callback):指的就是具有callable类型的函数,一般用作参数的传递。如PHP内置函数call_user_func()可以接受用户自定义的回调函数作为参数。就是把函数作为参数传入进另一个函数中使用
<?php
function qwe($name,$age)
{ echo "我叫$name 我$age 岁了 <br>"; }
call_user_func('qwe', "张三",'18');
call_user_func('qwe', "李四",'24');
?>
4、匿名函数
匿名函数:就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题。
匿名函数中使用外部的变量,需要通过use关键字实现。use关键字后圆括号“()”中的内容即为要使用的外部变量列表,多个变量之间使用英文逗号“,”分隔即可。
匿名函数仍然是函数,可以传入参数,直接把赋数赋值给变量,调用变量即为调用函数
<?php
$sum = function($a, $b)// 定义匿名函数
{return $a + $b;};
echo $sum(100, 200);
//输出结果:300
?>
匿名函数中使用外部的变量,需要通过use关键字实现。use关键字后圆括号“()”中的内容即为要使用的外部变量列表,多个变量之间使用英文逗号“,”分隔即可
<?php
$c = 100;
$sum = function($a, $b) use($c)
{return $a + $b + $c;};
echo $sum(100, 200);
// 输出结果:400
?>
除此之外,匿名函数还可以作为函数的参数传递,实现回调函数
<?php
function calculate($a, $b, $func)//回调函数
{ return $func($a, $b); }
echo calculate(100, 200, function($a, $b){ return $a + $b; });
echo calculate(100, 200, function($a, $b){ return $a * $b; });
?>
PHP内置函数
1、字符串函数
函数名称 | 功能描述 |
---|---|
strlen() | 获取字符串的长度 |
srtpos() | 查找字符串首次出现的位置 |
strrpos() | 获取指定字符串在目标字符串中最后一次出现的位置 |
str_replace() | 用于字符串中的某些字符进行替换操作 |
substr(str,start,end) | 用于获取字符串中的子串 |
explode() | 使用一个字符串分割另一个字符串 |
implode() | 用指定的连接符将数组拼接成一个字符串 |
trim() | 去除字符串首尾处的空白字符(或指定成其他字符) |
str_repeat() | 重复一个字符串 |
strcmp() | 用于判断两个字符串的大小 |
substr_replace() | 把字符串的一部分替换为另一个字符串 |