1、定义
函数,就是将一些重复使用的功能写到一个独立的代码块中,在需要时单独使用。
2、函数创建语法:
function fun_name($str1,$str2,...$strn){
fun_body
}
3、传参
1>在调用函数时,需要向函数传递参数,被传入的参数为实参,函数定义的参数为形参
2>参数传递的方式有三种:
①值传递 :
将实参的值复制到形参中,在函数内部对形参进行操作,操作结果不影响实参。
<?php
function add($num){
$num=$num+1;
echo "函数内部:\$num=".$num."<p>";
}
$num=1;
add($num);
echo "函数外部:\$num=".$num."<p>";
?>
运行结果:
函数内部:$num=2
函数外部:$num=1
②引用传递 :
将实参的内存地址传到形参中,函数的操作结果会影响实参。传递方式是在值传递基础上加上&即可(&加在形参上)。
<?php
function add(&$num){
$num=$num+1;
echo "函数内部:\$num=".$num."<p>";
}
$num=1;
add($num);
echo "函数外部:\$num=".$num."<p>";
?>
运行结果:
函数内部:$num=2
函数外部:$num=2
③默认参数:
可选参数,可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值为空。
注意:
1>默认参数必须放在非默认参数的右侧,否则有可能出错
2>从PHP5开始,默认值也可以通过引用传递
<?php
function price($price,$tax=""){
$price=$price+($price*$tax);
echo "价格:".$price."<p>";
}
price(100,0.25);
price(100);
?>
运行结果:
价格:125
价格:100
4、函数返回值
1>函数将返回值传递给函数调用者的方式是使用return()。
2>return()将函数的值返回给函数的调用者,即将程序的控制权返回到调用者的作用域。
3>如果在全局作用域内使用renturn(),将终止脚本的执行。
4>return只能返回一个参数,要返回多个值,可以将多值打包成数组返回。
<?php
function add($num){
$num=$num+1;
return $num;
}
echo "返回值是:".add(10);
?>
运行结果:
返回值是:11
5、变量函数
1>函数的调用是通过改变变量名来实现的,通过在变量名后面加上一对小括号,PHP将自动寻找与变量名相同的函数,并且执行它,如果找不到相对应的函数,就会报错,
2>这个技术可以用于实现回调函数和函数表等。
<?php
function come(){
echo '来了个人<p>';
}
function go($name='Jack'){
echo $name.'走了<p>';
}
function back($name){
echo $name.'回来了<p>';
}
$fun='come';
$fun();
$fun='go';
$fun("Jormin");
$fun='back';
$fun("Jormin");
?>
运行结果:
来了个人
Jormin走了
Jormin回来了
6、函数引用
1>对函数的引用,就是对函数返回结果的引用
2>使用方法是在方法名字前面加上&
3>和参数传递不同,引用函数必须在定义函数和调用函数的时候,前面都加上&,用来说明返回的是一个引用
<?php
function come(){
echo '来了个人<p>';
}
function go($name='Jack'){
echo $name.'走了<p>';
}
function back($name){
echo $name.'回来了<p>';
}
$fun='come';
$fun();
$fun='go';
$fun("Jormin");
$fun='back';
$fun("Jormin");
?>
运行结果:
result=原字符串
result=新字符串
7、取消引用
1>取消引用使用unset()函数。
2>unset()是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。
<?php
$str1='123';
$str2=&$str1;
echo 'str2='.$str2.'<p>';
unset($str2);
echo 'str2='.$str2.'<p>';
echo 'str1='.$str1.'<p>';
?>
运行结果:
str2=123
str2=
str1=123
转载于:https://blog.51cto.com/jormin/1311177