当满足内部的 if 语句时,这将在循环结束时结束吗?


Will this while loop end when the if statement inside is met

我有一个函数块,可以在我的电子邮件列中搜索匹配项。找到匹配项后,这个 While 循环会继续搜索其他匹配项,还是在满足其中的 if 语句时结束?

function find_similar_email ($email) {
    global $con;
    // select db
    mysql_select_db('practice', $con);
    // select a column to search from
    $emailList = mysql_query("SELECT email FROM users", $con);
    // search for similar matches
    while ($emailListResult = mysql_fetch_array($emailList)) {
        if ($email == $emailListResult['email']) {
            return TRUE;
        }
    }
}

如果满足 if 条件,则 return 语句将被执行。这将离开函数,并有效地结束 while 循环。

在您的示例中,return将退出函数,从而有效地终止循环。

但是,您应该使用 WHERE 子句进行选择,而不是选择所有内容并搜索结果。由于您只是要查看电子邮件地址是否在表中,因此您可以执行以下操作:

function find_similar_email ($email) {
  global $con;
  // select db
  mysql_select_db('practice', $con);
  // select all rows with matching email address
  $emailList = mysql_query("SELECT email FROM users where `email`='$email'", $con) or die(mysql_error($con); 
  return(mysql_num_rows($emailList) !== 0);  // return true if we found it, false if we didn't
}

"return" 退出函数。 所以是的,不会再读取任何行...