首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》5.9 使用Return关键字

关灯直达底部

关键字"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”来表示,虽然它们是不同的数据类型。