Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对用户定义函数中的return语句感到困惑_Php_Function_Return Value_Return_User Defined Functions - Fatal编程技术网

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

Php 对用户定义函数中的return语句感到困惑,php,function,return-value,return,user-defined-functions,Php,Function,Return Value,Return,User Defined Functions,关于返回声明,我没有什么问题 a) 是否必须在用户定义的函数中定义返回语句 b) 如果我只定义一个没有任何参数的return语句,它仍然有效吗?它会返回空值吗 c) 以下函数有效吗 function admin_credential($password = 0, $email = 0) { if( $password != 0) { $password = sha1($password); $query = "UPDATE admins SET pa

关于返回声明,我没有什么问题

a) 是否必须在用户定义的函数中定义返回语句

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;
         }
a) 是否必须在用户定义的函数中定义返回语句

没有

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;
         }
是,但是由于您没有返回,
$result
将丢失。
返回值
实际上是不必要的。

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

b) 没有值的
返回值
是有效的,但它可能会让其他人在稍后查看您的代码时感到困惑,因此将其作为标准做法是一个坏主意。考虑返回<代码> null <代码>,这将产生相同的效果。

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

a) 是否必须在用户定义的函数中定义返回语句

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

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

对。省略
return
与不带任何参数的
return
相同,两者都返回
NULL

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;
         }
它在语法上是有效的。但是,如果返回一个布尔值来标记查询的成功/失败,则更有意义。以便调用者知道数据库更新是否正常进行

编辑:

"UPDATE admins SET password = '$password'"

查询缺少
WHERE
子句。因此,它有效地更新了<代码> Admin S/<代码>表中所有用户的密码。

< P>当您查看PHP表以进行用户身份验证时,有许多事情要考虑。您必须仔细考虑如何在表中存储数据以及如何检索数据。这意味着您需要考虑有多少用户将访问,以及多少用户类型。如果您有少数用户,比如少于10个,我建议您不要为数据库用户身份验证而烦恼


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

我知道了,pekka,return语句能够返回值并停止脚本。是吗?@Ibrahim是的,尽管“停止脚本”并不完全准确:它退出函数(这可能是你的意思)。要扩展@Pekka的注释,
return
的意思是“返回调用此函数的代码”。它不是必需的,因为前面的代码会在函数结束时自动恢复。不需要返回值,因为无论是否使用值,都可以恢复调用代码。
return
语句仅在您希望发送值或提前终止函数时才需要。至于b,return是一种控制结构,在函数完成其工作时的任何时候使用它都是非常有效和有用的。如果一个函数没有返回任何内容,并且该函数可以在代码中的几个点逻辑上完成,那么不带参数的返回不应该令人混淆。完全不同意b)。如果需要退出当前作用域,
return
是一种方法。
函数myfunc(){return;}
远不如
函数myfunc(){return NULL;}
那么清晰。两者都会在赋值时导致语法错误,但NULL表示发生了什么。为了清晰起见,按顺序进行编辑?我想说,如果一个函数通常返回某些内容,但显式不返回任何内容,那么应该使用return null,如果一个函数通常不返回任何内容,但需要将控制权交还给调用代码,则应该使用just return。这是有效的,但这是可怕的语法格式。。。我发现很难理解行的嵌套是怎么回事。@斯蒂芬霍尔,我不想使用语法格式,谢谢你的提示:)Stephen Orr ~它被称为横幅缩进,而不是坏的。我自己也准备好了。