1、定义
函数,就是将一些重复使用的功能写到一个独立的代码块中,在需要时单独使用。
2、函数创建语法:
function fun_name( $str1 , $str2 ,... $strn ){ fun_body } |
3、传参
1>在调用函数时,需要向函数传递参数,被传入的参数为实参,函数定义的参数为形参
2>参数传递的方式有三种:
①值传递 :
将实参的值复制到形参中,在函数内部对形参进行操作,操作结果不影响实参。
123456789 | <?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开始,默认值也可以通过引用传递
12345678 | <?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只能返回一个参数,要返回多个值,可以将多值打包成数组返回。
1234567 | <?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