如何处理多个if语句PHP

时间:2015-06-06 19:47:41

标签: php jquery validation

  • 列表项

想要以最有效的方式做一些意见。我有电子邮件输入和电话输入。我应用了JQuery验证,效果很好。基本上,他们都不会是空的。如果只提供一个,那很好。如果两者都提供,那也没关系。

每个字段都会调用自己的API。如果提供了电话字段,它将调用电话API,如果提供了电子邮件字段,它将调用并通过电子邮件发送API,如果提供了两个字段,它将调用这两个API。为了解决这个问题,我几乎做了

if (isset($_POST["email"]) && !empty($_POST["email"])){
    //call email API
}
if (isset($_POST["phone"]) && !empty($_POST["phone"])){
    //call phone API
}

这似乎涵盖了上述所有情况,尽管可能有更有效的方法来实现这一目标。

通过我的验证,我还想在任何时候按下提交按钮进行记录(它将无法通过验证,用户不会知道,我只是想记录它)。所以我有一个invalidHandler设置,我抓住输入的值(如果有的话)并将它们传递给PHP。

虽然在PHP中处理这个问题的最佳方法是什么?如果只填写一个字段,我不希望它被触发,因为上面会处理它。如果两个字段都是空的,我也不希望它被触发。如果一个或两个字段都有无效数据(验证失败),我真的只想要触发它。如果一个字段有有效数据而另一个字段没有,那么我不需要担心这个。

所以真的只是寻找在PHP中处理这样的事情的最好方法。

谢谢

2 个答案:

答案 0 :(得分:2)

不确定你真正在问什么,但我认为你需要的是每张支票的标志,以及OR opreator:

$flag_phone = $flag_email = false;
if (phone_has_invalid_data()) {
    $flag_phone = true;
}
if (email_has_invalid_data()) {
    $flag_email = true;
}
if ($flag_email OR $flag_phone) {
    //throw some error
} else {
    //everything ok
}

(谈到不必要的优化,代码if (isset($var) && !empty($var))相当于if (!empty($var))

答案 1 :(得分:0)

这是一个相当无意义的优化,但你可以这样做:

if (isset($_POST["email"]) && !empty($_POST["email"])){
    //call email API
} elseif (isset($_POST["phone"]) && !empty($_POST["phone"])){
    //call phone API
}

除此之外,它看起来很好