函数就是将一些重复使用的功能写在一个独立的代码块中,在需要的时候单独调用。
一、定义和调用函数
function fun_name($str1,$str2......)
{
fun_body
}
function 声明自定义函数的必须使用的关键字
fun_name 自定义函数的名称。
$str1,$str2 为自定义函数的参数。
fun_body 自定义函数的主体,功能实现的部分。
调用函数:引用函数名并赋予正确的参数
例如:
<?php function method($a) { return "$a x $a =".$a * $a; } echo method(5);?>输出结果:5 x 5 = 25
二、在函数间传递参数
调用需要传递参数,被传入的参数叫实参,在函数里定义的参数的形参。函数间的参数的传递方式有按值传递、按引用传递、默认参数3种方式。
1、按值传递方式
将实参的值赋值都对应的形参中,在函数内部的对形参进行操作,操作的结果并不会影响到实参,也就是函数执行后实参的值不会改变。
例如:
<?php function method($a){ $a = $a+3; echo "在函数内$a的值是:".$a; } $a = 2; method($a); echo "
"; echo "在函数外$a的值是:".$a;?>输出结果:在函数内$a的值是:5在函数外$a的值是:2
2、按引用传递方式
按引用传递就是将实参的内存地址传递给形参。这时候函数内部的对形参的操作都会影响到实参的值。在函数执行后实参的值将会发生改变。
引用传递的方式是函数定义后在形参前面加一个“&”的符号。
例如:
<?php function method(&$a){ $a = $a+3; echo "在函数内$a的值是:".$a; } $a = 2; method($a); echo "
"; echo "在函数外$a的值是:".$a;?>输出结果:在函数内$a的值是:5在函数外$a的值是:5
3、默认参数(可选参数)
可以指定某个参数是可选参数,将可选参数放在参数列表末尾,并且指定其默认值是什么(可以是空的或者其他数据类型的值)。
例如:
<?php function method($a,$b="",$c=2){ $a = $a+($a*$b+$c); echo "输出:$a
"; } method(10); method(10,2); method(10,2,10);?>输出结果:输出:12输出:32输出:40
三、函数的返回值
函数如果有返回值需要使用关键字reurn 或者 return()函数。如果在全局作用域使用了return关键字,那么将终止脚本的执行。
例如:
<?php function method($a){ return $a+$a; } echo method(1);?>输出结果:2
return 语句只能返回一个操作数,也就是只能返回一个值,不能一次返回多个值。如果需要返回多个值,可以在函数中定义一个数组,将返回值存储在数组中返回。
![cccc64b2dd6dc018e8d7524da6f7372b.png](https://i-blog.csdnimg.cn/blog_migrate/677bb1947922da00c5441064e8bb9693.jpeg)
四、变量函数
来看一个例子:
<?php function eat(){ echo "吃饭
"; } function drink($name="Tom"){ echo "$name 在喝水
"; } function tea($a){ echo "$a 在喝茶
"; } $a = "eat"; $a(); //调用函数eat $a = "drink"; $a("Jerry"); //调用函数drink $a="tea"; $a("Jack"); //调用函数eat?>输出结果:吃饭Jerry 在喝水Jack 在喝茶
这个例子我们可以发现变量函数的调用可以通过改变变量名就可以实现的,变量名加小括号php 自动寻找和变量名相同的函数,并且执行它。如果找不到对应的函数,系统将会报错。通过这个方式,我们可以用于实现回调函数和函数表等。
五、对函数的引用
前面我们说函数的参数传递可以使用引用传递的方式修改实参的内容。引用不仅可以用于普通变量、函数参数,也可以用于函数本身。对函数的引用,就是对函数返回结果的引用。
例如:
<?php function &method($a=0){ $a = "我在$a"; return $a; } $s = &method("捉迷藏"); echo $s;?>输出结果:我在捉迷藏
注意:和参数引用传递不同,对函数的引用必须在两个地方都使用“&”符号,用来说明返回的是一个引用。
六、取消引用
当不需要引用的时候,可以取消引用。取消引用使用unset()函数。它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。
例如:
<?php $a = 1234; $b = &$a; echo "$b:".$b."
"; unset($b); echo "$b:".$b."
"; echo "$a:".$a."
";?>输出结果:$b:1234$b:$a:1234
下节预告:php的编码规范