函数的声明与调用
// 函数的声明与调用
//函数基本语法:
/*
function 函数名(参数){
要执行得代码,可以一行可以多行可以为空;
}
*/
// function 声明一个函数
function sum(int $a, int$b):int{
// return: 将函数的执行结果返回到调用者
return $a + $b;
}
// 此处返回3
echo sum(1,2);
函数得类型:
function sum1(int $a, int$b):int{
return $a * $b;
}
// 此处返回200
echo sum1(10,20),'<hr>';
- 系统函数:
$str = "使用关键字可以模拟优化器执行SQL查询语句";
// 字符串截取
// 按照字节截取substr();,UTF-8:一个汉字三个字节
//此处返回 :使用
echo substr($str, 0, 6),'<br>';
// 字符串截取mb_substr()此处返回:使用关键字可
echo mb_substr($str, 0, 6),'<hr>';
- 可变参数:
// 可变参数:
function add(int $a, int$b):int{
return $a + $b;
}
// 声明变量值为函数名称
$myadd = 'add';
// 两者都输出30
echo add(10,20),'<br>';
echo $myadd(10,20),'<hr>';
- 匿名函数:没有函数名的函数,也叫闭包函数
// 语法:function (参数列表){....}; 要带着结束符
$func = function (int $a, int$b):int{
return $a + $b;
};
//输出100
echo $func(99,1),'<br>';
// use(外部作用域的变量)用闭包的方式访问外部作用域中的变量
// 全局变量
$p = 10;
$func = function (int $a, int $b) use ($p):int{
return $a + $b + $p;
};
//输出110
echo $func(99,1),'<hr>
函数返回值
- 函数肯定有返回值,而且只能返回单一得值,但是可以通过多种方式返回多值
function f(){
}
// 此处返回null
var_dump (f());
function demo(){
$name = '乔峰';
$kung_fu = 18;
return $name .','. $kung_fu;
}
// 输出 乔峰,18
echo demo(),'<hr>';
- 通过数组方式返回
// 数组返回
function demo2():array{
$name = '乔峰';
$kung_fu = 18;
return ['name'=>$name,'kung_fu'=>$kung_fu];
}
// 输出 乔峰
echo demo2()['name'],'<hr>';
- json:是js对象字面量的字符串表示
function demo3():string{
$name = '乔峰';
$kung_fu = 18;
return json_encode(['name'=>$name,'kung_fu'=>$kung_fu]) ;
}
//此处返回{"name":"\u4e54\u5cf0","kung_fu":18}
//"name""kung_fu" 对象的属性
echo demo3(),'<hr>';
- 序列化得方式返回
// 此处返回:i:123; i代表一个整数,123代表整数的值
echo serialize(123),'<br>';
// 此处返回:s:3:"123"; s代表字符串,3代表字符串的长度,“123”字符串内容
echo serialize('123'),'<br>';
// 此处返回:b:1; b代表布尔值,1代表true 真
echo serialize(true),'<br>';
// 此处返回:a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
// a代表数组 3 代表里面有三个值 大括号中的i代表数值的类型是整数
echo serialize([1,2,3]),'<hr>';
function demo4():string{
$name = '乔峰';
$kung_fu = 18;
return serialize(['name'=>$name,'kung_fu'=>$kung_fu]) ;
}
echo '序列化方式' , demo4(),'<hr>';
函数得参数
// 默认参数
function demo(int $a, int $b=1):int
{
return $a + $b;
}
echo demo(1);
echo '<hr>';
// 值参数
function demo1(int $a):int
{
return $a *=2;
}
// 写$b = $a;单纯为了自己好理解 不知道写了对不对
$b = $a;
$b =10;
echo demo1($b),'<br>';
echo $b,'<hr>';
// 引用传递
function demo2(int &$a):int
{
return $a *=2;
}
// 写$b = $a;单纯为了自己好理解 不知道写了对不对
$b = $a;
$b =10;
echo demo2($b),'<br>';
echo $b;
echo '<hr>';
// 剩余参数
// 当调用得参数 数量不确定时 用...
function demo3(...$y)
{
return array_sum($y);
}
$res = demo3(1,2,3,4,5,6,7);
print_r($res);
函数的匿名空间
- 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误
- 要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,命名空间使用关键字namespace,
// 函数得命名空间
namespace ns1{
// ns1 里面的demo1
function demo1(){
return __FUNCTION__;
}
}
//全局空间:匿名空间,默认空间
namespace {
//全局空间下面的demo1
function demo1(){}
echo \ns1\demo1();
}
总结:这一堂课是听得最迷糊的一堂课,感觉完全没有理解。