一、函数分类
函数分为:自定义函数,内置函数。
二、值传递和引用传递的区别:
1.值 传 递:传递的是值的副本。函数范围内对值的任何改变在函数外部都会被忽略。
2.引用传递:传递的是值的内存地址。函数范围内对值的改变在函数外部会发生改变。
3.优缺点:按值传递,php必须复制值。特别是对于大型的对象和字符串来说,复制一份也占用内存,这将是一个很大的代价。按引用传递则不需要复制值,对于提高性能来说很有好处。
function add(&$a,$b){
$a = 3;
return $a+$b;
}
$num1 = 10;
$num2 = 20;
echo add($num1,$num2)."---".$num1;
三、在函数中如何使用全局变量
1.参数传递的方式
2.用global关键字在函数中声明
3.用GLOBALS全局变量数组的使用
使用global和GLOBALS的区别:当在函数内部销毁全局变量时,global关键字销毁的是全局变量的别名,而
G
L
O
B
A
L
S
[
]
是
指
向
全
局
变
量
本
身
,
所
以
销
毁
后
仍
可
以
使
用
GLOBALS[]是指向全局变量本身,所以销毁后仍可以使用
GLOBALS[]是指向全局变量本身,所以销毁后仍可以使用GLOBALS[]来取得全局变量
$quan_ju = "全局变量";
function ming(){
global $quan_ju;
unset($quan_ju);
// echo $quan_ju;
echo $GLOBALS["quan_ju"];
}
ming();
四、注意形参默认值的顺序,必须放在非默认参数的后边
function sum($b,$a=10){
return $a+$b;
}
echo sum(15);
五、局部静态变量和局部变量的区别
局部变量只初始化一次,长度内存不会销毁直到服务关闭。而局部变量只在语句块中只用,生命周期只在语句块中。
function a(){
$i = 1;//局部变量
echo ++$i;
}
a();//2
a();//2
a();//2
function a1(){
static $i = 1;//局部静态变量
echo ++$i;
}
a1();//2
a1();//3
a1();//4
六、匿名函数(又叫闭包函数),是指没有名称的函数
匿名函数:又叫闭包函数,是指没有名称的函数。
$sex = "boy";
$age = 18;
$str = function($name)use($sex,$age){
return "我的名字是{$name},我的性别是{$sex},我的年龄是{$age}";
};
echo $str("懒羊羊");
$str = "I love three thinfs:the sun,the moon and you.The sun for the day,the moon for the night,and you forever.";
$arr = explode(",",$str);
print_r($arr);
echo "<hr>";
// 将数组按照要求拼接为字符串
$arr1 = ["红的0","白的","蓝的","绿的"];
$s = implode($arr1,"----");
echo $s;