对用户定义函数中的return语句感到困惑

时间:2010-09-13 15:36:29

标签: php function return-value return user-defined-functions

我对退货声明几乎没有疑问。

a)是否必须在用户定义的函数中定义return语句。?

b)如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗?

c)以下函数是否有效?

function admin_credential($password = 0, $email = 0) {
     if( $password != 0) {
         $password = sha1($password);
         $query = "UPDATE admins SET password = '$password'";
         $result = mysql_query($query);
         }
     if( $email != 0) {
         $query = "UPDATE admins SET email = '$email'";
         $result = mysql_query($query);            
         }
         return;
         }

4 个答案:

答案 0 :(得分:3)

  

a)是否必须在用户定义的函数中定义return语句。?

没有

  

b)如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗?

  

c)以下函数是否有效?

是的,但$result会丢失,因为您没有退回。 return并非真的有必要。

答案 1 :(得分:2)

a)你不需要在PHP的函数末尾返回一个值。这大致相当于C的void函数。

b)没有价值的return是有效的,但是对于稍后查看您的代码的其他人来说可能会造成混淆,因此将其作为标准做法是一个坏主意。请考虑返回NULL,这将产生相同的效果。

c)是的,您的函数使用有效的语法。

答案 2 :(得分:2)

  

a)是否必须在用户定义的函数中定义return语句。?

没有。有时你编写的函数不会向被调用的函数返回任何内容,比如说一个以漂亮的方式打印多维数组的函数。

  

b)如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗?

是。省略returnreturn相同,没有任何参数,并且都返回NULL

  

c)以下函数是否有效?

它在语法上是有效的。但是如果返回一个布尔值来标记查询的成功/失败,那将更有意义。这样调用者就可以知道数据库更新是否正常。

修改

"UPDATE admins SET password = '$password'"

查询缺少WHERE子句。因此,它有效地更新了admins表中所有用户的密码。

答案 3 :(得分:1)

当您查看PHP表以进行用户身份验证时,需要考虑许多事项。您必须仔细考虑如何将数据存储在表中以及如何检索它。这意味着您需要考虑有多少用户可以访问,以及有多少用户类型。如果你有少数用户甚至不到10个,我建议不要打扰数据库用户身份验证。

您提出的问题已经得到了有效解决,但我建议您尽量避免使系统复杂化,并采用许多不必要的功能:保持简单。