关键字"return"将终止函数的执行。当一个函数的执行结束时,要么是因为所有命令都执行完了,要么就是因为使用了关键字"return"。在函数结束后,程序返回到调用函数的下一条语句。
如果调用了如下所示的函数,将只有第一条echo命令被执行:
function test_return{
echo"This statement will be executed";
return;
echo"This statement will never be executed";
}
很明显,这并不是使用return命令的有用方法。通常,从函数中间返回的原因就是特定的条件已经被满足了。
一个错误条件是在程序执行到函数末尾之前使用"return"语句中断函数执行的最常见原因。例如,如果编写了一个能够判断两个数字大小的函数,而且当缺少任何一个参数时,你可能会希望退出函数执行。
function larger($x,$y){
if((!isset($x))||(!isset($y))){
echo"This function requires two numbers.";
return;
}
if($x>=$y){
echo$x."<br/">;
}else{
echo$y."<br/">;
}
}
内置函数isset将告诉我们一个变量是否已经被创建并被赋值了。在以上代码中,如果任何一个变量没有被赋值,就给出一条错误信息然后再返回。我们通过使用!isset来进行测试,这意味着“没有被赋值”,所以if命令可以解释成“如果x没有被赋值或者y没有被赋值”。如果这两个条件中的任意一个为真,函数就返回。
如果"return"语句被执行了,函数中接下来的代码就会被忽略。程序执行将会返回到调用该函数的位置继续执行。如果两个参数都被赋值,则函数会显示两个中较大的那个。
如下所示代码:
$a=1;
$b=2.5;
$c=1.9;
larger($a,$b);
larger($c,$a);
larger($d,$a);
将具有如下所示的输出:
2.5
1.9
This function requires two numbers
从函数返回一个值
希望从函数中退出并不是使用"return"语句的唯一理由。许多函数都使用"return"语句来与调用它们的代码进行交互。如果不仅仅是将larger函数的比较结果输出,而是将比较的结果返回,那么这个函数会更加有用。通过这种方法,调用它的代码可以选择是否以及如何显示或者使用这个结果。等价的内置函数max就是这样。
可以按如下所示方式编写larger函数:
function larger($x,$y){
if((!isset($x))||{!isset($y))){
return false;
}else if($x>=$y){
return$x;
}else{
return$y;
}
}
在这里,函数返回了传入的两个参数中较大的那个。在出现错误的情况下,将返回一个明显不同的值。如果缺少其中任何一个数字,可以返回"false"。(使用这种方法唯一需要注意的是编程人员调用这个函数必须使用“===”测试返回类型,确保"false"不会与0混淆。)
作为比较,如果两个变量都没有被赋值,max内置函数将不会返回任何东西,而如果只有其中一个变量被赋值,该内置函数将返回赋值的那个数。
如下所示的代码:
$a=1;$b=2.5;$c=1.9;
echo larger($a,$b).'<br/>';
echo larger($c,$a).'<br/>';
echo larger($d,$a).'<br/>';
将产生如下所示的输出,因为$d并不存在,而且false并不是可见的:
2.5
1.9
通常,执行特定任务但又不返回任何具体值的函数将返回"true"或"false"来表示函数执行是否成功。布尔值"true"和"false"可以分别用整数“1”和“0”来表示,虽然它们是不同的数据类型。