定义函数使用function关键字,这个关键字也是一个英文单词,意思是功能。顾名思义,使用函数就是在程序中实现一定的功能,他就是一段代码块。
内置函数
PHP提供了大量的内置函数,常见的内置函数包括数学函数、字符串函数、时间和日期函数等。
用例子来理解:
<?php
echo rand()."<br />"; //返回随机整数
echo rand(1000,9999)."<br />"; //产生一个4位随机整数
?>
运行结果:(每次刷新都会不一样)
1420187511
9413
自定义函数
更多的情况下,程序员需要的还是自定义函数。
自定义和调用函数
语法:
funciton 函数名(参数1, 参数2, ……) {
函数的具体内容;
}
例子:
<?php
function sayhello($chenghu) { //自定义函数sayhello
return $chenghu."欢迎您来到学习php教程课堂。";
}
echo sayhello("赵先生"); //调用函数sayhello
?>
赵先生欢迎您来到学习php教程课堂。
这个例子函数的返回值,是通过值返回的。就是说return
语句返回值时,创建了一个值的副本,并把它返回给使用此函数的命令或函数,在这里是echo
语句。
向函数传递参数值
由于函数一段封闭的程序,因此很多时候都需要向函数内传递一些数据来进行操作。
下面我们直接抄书上的例子,用于自己的理解,并实际运行测试一下:
<?php
function jia($tian,$fangjia){ //自定义函数
$zongjia = $tian*$fangjia; //计算总结,一天价钱*天数
echo "需要支付的总价:$zongjia"."元。";
}
$jitian = 5;
$fangjianfei = 118;
jia($jitian, $fangjianfei); //通过变量传递参数
jia(7, 168); //直接传递参数
?>
需要支付的总价:590元。需要支付的总价:1176元。
分析:
- 上面这种方式传递参数值的方法就是向函数传递参数值。
- 其中
function jia($tian, $fangjia){}
定义了函数和参数。 - 传递参数值可以通过变量或者直接输入数字,都可以。
向函数传递参数引用
其实就是向函数传递变量引用。参数引用一定是变量引用,静态数值是没有引用一说的。使用&
符号表示参数引用。
<?php
$fee = 300;
$xf = 50;
function zongjia(&$fee, $xf){
$fee=$fee+$xf;
echo "需要支付的总价:$fee"."元。";
}
zongjia($fee, $xf);
zongjia($fee, $xf);
?>
需要支付的总价:350元。需要支付的总价:400元。
分析:
- 上面传递参数值的方法就是向函数传递参数引用。使用的
&
符号表示参数的引用。 function zongjia(&$fee, $xf){}
定义了函数、参数和参数引用。变量$fee
是以参数引用的方式进入函数的。当函数的运行结果改变了变量$fee
的引用时,在函数外的变量$fee
的值也发生了改变,也就是函数改变了外部变量的值。
从函数中返回值
从上面的例子中,都是把函数运算完成的值直接打印出来。很多情况下,程序并不需要直接把结果打印出来,而是仅仅给出结果,并且结果传递给调用这个函数的程序所用。
需要用到return
关键字。还是用客房价格和服务价格为例进行理解。
<?php
function jia($tian, $fangjia){ //声明自定义函数
return $tian*$fangjia; //返回酒店消费的总价格
}
$jitian = 5;
$fangjia = 198;
echo jia($jitian, $fangjia);
?>
分析:
- 函数
function jia($tian, $fangjia){}
算法中,直接使用了return
把运算结果返回给调用次函数的程序。 - 其中
echo jia($jitian, $fangjia);
语句调用了此函数,jia()
把运算值返回给了echo
语句,才有了显示出来的结果。主要是这里也可以不用echo
来处理返回值,也可以对它进行其他处理,比如赋值给一个其他变量后供其他地方需要等。
对函数的引用
无论内置函数还是自定义函数,都可以通过简单的函数名调用。但也有些不同:
- 如果是内置函数,可以直接调用。
- 如果这个函数是PHP某个库文件中的函数,则需要用
include()
或require
命令把此文件加载,然后才能使用。 - 如果是自定义函数,与引用程序同在一个文件中,则直接引用。如果此函数不在当前文件中,就需要用
include()
或require()
命令加载。跟上面那条类似。
其实大体上记住两条就是,内置函数任何地方都可以直接调用;自定义函数或者库文件内的函数,不在当前文档内的就需要加载后使用。
对函数的引用,实际上就是对函数返回值的引用。
<?php
function &lizi($a=1){
return $a;
}
$b = &lizi("引用函数的例子");
echo $b."<br />";
?>
分析:
- 例子中先定义了一个函数,然后变量
$b
将引用该函数,最后输出变量$b
,它实际上是$a的值。 - 和参数传递不同,定义函数和引用函数时,都必须使用
&
符号,表明返回的是一个引用。
对函数引用的取消
对于不需要引用的函数,可以做取消操作。取消引用使用unset()
函数来完成。目的是断开变量名和变量内容之间的绑定,此时并没有销毁变量内容。
<?php
$n = 100;
$a = &$n;
echo $a."<br />";
unset($a); //取消引用$n
echo $n;
?>
上面就是先声明变量和变量引用,输出引用后取消引用,再次调用原变量,取消引用后,对原油变量没有任何影响。