0

我有这个功能块,可以在我的电子邮件列中搜索匹配项。找到匹配项后,此 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;
        }
    }
}
4

3 回答 3

2

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

于 2013-09-16T00:12:54.957 回答
1

在您的示例中,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
}
于 2013-09-16T00:21:18.037 回答
-1

“return”退出函数。所以是的,不会再读取更多行...

于 2013-09-16T00:13:12.707 回答