PHP如果语句没有按我认为的那样工作

时间:2014-03-19 22:12:45

标签: php

我试图在表单上设置一些错误检查,到目前为止我有以下内容:

 if (empty($fname)) {
        $error = true;
        $error_fname = "Please fill in your first name";
    }else if (empty($lname)) {
        $error = true;
        $error_lname = "Please fill in your first name";
     }

虽然在第一个if语句中将字符串赋值给变量$ error_fname,但是第二个if语句什么都不做,它不会将错误分配给变量。

对此有何帮助?

4 个答案:

答案 0 :(得分:2)

如果你遇到了你的第一个条件,你就永远不会抛出第二个条件,不要使用if else而不是两个if并且还将你的错误放在一个数组中,否则如果满足这两个条件你可能会覆盖它

$error_lname = array();
if (empty($fname)) {
    $error = true;
    $error_lname[] = "Please fill in your first name";
}
if (empty($lname)) {
    $error = true;
    $error_lname[] = "Please fill in your last name";
 }

如果您需要两个单独的错误,可以使用不同的变量

if (empty($fname)) {
    $error = true;
    $error_fname = "Please fill in your first name";
}
if (empty($lname)) {
    $error = true;
    $error_lname = "Please fill in your last name";
 }

答案 1 :(得分:1)

因为当它的名字不是为了姓,所以有一次你得到一个条件为真..看看@ firstname是空的,错误的第一个名字是真的然后它不会去第二个如果..这里是示例代码你只需要单独给出条件..

if (empty($fname)) {
    $error = true;
    $error_fname = "Please fill in your first name";
}
 if (empty($lname)) {
    $error = true;
    $error_lname = "Please fill in your Last name";
 }

答案 2 :(得分:1)

$error=false;
if (empty($fname)) {
        $error = true;
        $errors []= "Please fill in your first name";
    }

 if (empty($lname)) {
        $error = true;
        $errors[] = "Please fill in your last name";
     }


if($error)
  print_r($errors);

答案 3 :(得分:1)

如果您删除" else":

,则可以修复此问题
if (empty($fname)) {
        $error = true;
        $error_fname = "Please fill in your first name";
}
if (empty($lname)) {
        $error = true;
        $error_lname = "Please fill in your last name";
}