函数的声明与调用
<?php
// 函数的声明与调用
function study(){
echo "小明读一年级";
}
// 调用输出
study();
输出如图:
函数的类型
<?php
// 函数的类型
// 1.自定义函数,func为函数名,$a和$b为函数参数,需要在调用函数时, 提供相应的实参。
function func($a, $b)
{
echo $a+$b;
}
func(2,5) ;
echo '<hr>';
// 2. 系统函数,系统自带,无需定义直接使用;
// 随机输出范围内的数字
echo rand(1,100).'<br>';
$t=time();
echo (date("Y-m-d", $t));
//3.可变函数
function func2($a,$b){
return $a +$b;
};
$sum ='func2';
echo $sum(10,20);
echo '<br>';
echo func2(10,20);
// 4.匿名函数 ,也叫具名函数,就是没有名字的函数,一般用于回调函数。
//将一个没有函数名的函数赋值给一个变量
$sum = function ($x, $y) {
return $x + $y;
};
echo $sum(10, 20);
函数返回值
<?php
// 函数的返回值
// 1.通过return 返回值
function sum($x, $y)
{
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4) . "<br>";
echo "2 + 4 = " . sum(8, 2);
//2.通过数组返回值
function num()
{
return array(0, 1, 2);
}
list($zero, $one, $two) = num();
//3.通过json返回字符串
function demo()
{
$user_id = 1;
$user_name = 'peter';
return json_encode(['id' => $user_id, 'name' => $user_name]);
}
echo demo();
// 输出:{"id":1,"name":"\u5f20\u4e09"}
//也可以使用json_decode()转回数组;(不加第二个参数默认转换为对象)
print_r(json_decode(demo(), true));
//4.通过序列化方式返回字符串
function demo2()
{
$user_id = 1;
$user_name = 'peter';
return serialize(['id' => $user_id, 'name' => $user_name]);
}
echo demo2();
// 输出:a:2:{s:2:"id";i:1;s:4:"name";s:6:"peter";}
//a表示数组,2个元素,
//第1个元素键名为id为string类型,长度是2,值为int类型,长度是1
//第2个元素键名为name为string类型,长度是4,值为string类型,长度是6
// 反序列化: 还原
print_r(unserialize(demo2()));
函数的参数
<?php
// 函数参数
// 1.一般参数
function sum(float $x, float $y): float
{
return $x + $y;
}
//调用
echo sum(10, 12);
//输出:22
//2.默认参数
//函数声明:求两个参数的和
function sum2(float $x, float $y = 20): float
{
return $x + $y;
}
//调用
echo sum2(10);
//输出:30
//3.引用参数,添加取地址符&
function sum3(float &$y): float
{
return $y *= 2;
}
$peter = 5;
//在函数参数中引用变量$p
echo sum3($peter);
//函数内部对参数的更新会实时映射到外部实际参数$p
echo $peter;
//4.剩余参数
// 例如:一个数量不固定的数求和,参数前面加...
function func(...$number)
{
//array_sum为数组求和函数
return array_sum($number);
}
// 定义数组
$arr = [2, 2, 2, 2, 2];
// 无论数组有多少个,全部进行计算
$num_sum = func(...$arr);
echo $num_sum;
函数的命名空间
<?php
// 函数的命名空间,命名空间一个最明确的目的就是解决重名问题,
// PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
// 这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。
namespace ns1 {
function func(){
return '我是ns1的func';
}
}
namespace ns2 {
function func(){
return '我是ns2的func';
}
}
// 全局空间: 匿名空间,默认空间
namespace {
function func(){}
echo ns1\func();
}