副作用是否会在此if子句中执行

时间:2009-08-23 20:15:26

标签: php if-statement

函数add_new_user是否在if子句内部运行SQL INSERT查询?

我有功能

function add_new_user ( $username, $email, $passhash_md5 )
{
    -- cut: database INSERT queries
    return 1;                                                                                                
}

我使用上面的代码

if ( validate( $username, $password, $email ) == 1 ) {
    if ( add_new_user ( $username, $email, $passhash_md5 )  == 1 ) {   
                // problem here
              -- cut
    }                                                                                                        
}

我问了这个问题,因为我不确定为什么this handler总是给出不成功的注册通知。这两个代码属于处理程序。该错误似乎在我的代码的语法中,也许在使用if / else。

4 个答案:

答案 0 :(得分:4)

  

add_new_user函数是否运行   SQL INSERT查询是否在其中   if -clause?

function foo() {
  echo 'A';
  return true;
}

function bar() {
  echo 'B';
  return false;
}

if ( foo() ) {
  if ( bar() ) {
    echo 'C';
  }
}
// Output: AB

答案 1 :(得分:3)

该函数首先得到它的返回值的评估。

在返回值已知后,将返回值与整数值1进行比较。

答案 2 :(得分:1)

是。运行if () {之间的任何内容以查看它是否为真。你可以在这里做任何事情。

答案 3 :(得分:1)

PHP必须评估布尔表达式,以便知道它是否会执行该块。因此,要评估“==”运算符,需要对双方进行求值,包括函数“add_new_user”。

所以,答案是:,它将评估函数add_new_user AND 它将执行插入操作(除非你在add_new_user中有一些代码会阻止这个)。

但是,你正在做一些应该尽可能避免的事情:你正在使用有副作用的病症!这会让你头疼(例如,现在!)。