我在运行多个if语句时遇到问题。即使“ if”语句为true,else语句由于某些奇怪的原因仍会运行后缀。有什么原因可能会这样吗?
$userlength = strlen($username);
$emailength = strlen($email);
$passlength = strlen($password);
// VERIFICATION
if ($userlength < 10 || $userlength > 20) {
Echo "Username Error";
}
if ($emailength < 7 || $emailength > 30) {
Echo "Email Error";
}
if ($passlength < 5 || $passlength > 32) {
Echo "Password Error";
}
if ($password != $repassword) {
Echo "Passwords Do Not Match";
}
else {
Echo "This still runs!?!?!!?";
}
问题是您的决赛else
只在决赛中发挥作用if
; 尝试else if
像这样使用:
// VERIFICATION
if ($userlength < 10 || $userlength > 20) {
echo "Username Error";
}
else if ($emailength < 7 || $emailength > 30) {
echo "Email Error";
}
else if ($passlength < 5 || $passlength > 32) {
echo "Password Error";
}
else if ($password != $repassword) {
echo "Passwords Do Not Match";
}
else {
echo "This still runs!?!?!!?";
}
但是您的逻辑尚不清楚。因此,也许您需要像这样使它更强大。该想法已$invalid
设置为FALSE
,任何错误都将设置$invalid
为TRUE
。因此,如果$invalid
确实在检查结束时TRUE
知道您应该停止正在做的事情并循环返回:
// VERIFICATION
$invalid = FALSE;
if ($userlength < 10 || $userlength > 20) {
$invalid = TRUE;
echo "Username Error";
}
if ($emailength < 7 || $emailength > 30) {
$invalid = TRUE;
echo "Email Error";
}
if ($passlength < 5 || $passlength > 32) {
$invalid = TRUE;
echo "Password Error";
}
if ($password != $repassword) {
$invalid = TRUE;
echo "Passwords Do Not Match";
}
if ($invalid) {
echo "There were errors.";
die();
}
echo "If you get to here, everything checks out. Move on!";
或者是使用$errors
数组处理此问题的更好方法。这个想法是,每次错误都会在$errors
数组中设置一个值。那么$errors
检查后数组是否为空?您知道输入有效。如果存在,$errors
则说明存在问题,您可以通过foreach
循环回显数组的内容:
// VERIFICATION
$errors = array();
if ($userlength < 10 || $userlength > 20) {
$errors[] = "Username Error";
}
if ($emailength < 7 || $emailength > 30) {
$errors[] = "Email Error";
}
if ($passlength < 5 || $passlength > 32) {
$errors[] = "Password Error";
}
if ($password != $repassword) {
$errors[] = "Passwords Do Not Match";
}
if (!empty($errors)) {
$was_word = count($errors) > 1 ? "were" : "was";
$error_word = count($errors) > 1 ? "errors" : "error";
echo "There " . $was_word . count($errors) . " " . $error_word . "<br />";
foreach ($errors as $error) {
echo $error . "<br />";
}
die();
}
echo "If you get to here, everything checks out. Move on!";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句