PHP'if'语句跨越多行?

n0p*_*0pe 2 php syntax

我一直试图让这个工作,但我一直在解析错误:

if (isset($_POST['submit'])) {
    if ( isset($_POST['agree']) == false  || 
         isset($_POST['name'] == false    || 
         isset($_POST['email'] == false   ||  
         isset($_POST['title'] == false   ||  
         isset($_POST['program'] == false || 
         isset($_POST['course'] == false  ||  
         isset($_POST['file'] == false    ||) {
        echo ' <font color="red"> Please complete all required fields </font><br><br> ';
    }
}
Run Code Online (Sandbox Code Playgroud)

在PHP中可以做这样的事吗?这是为了让我的代码更具可读性.

dec*_*eze 12

是的,这是完全可能的,但你有一个最后的尾随||没有下面的表达式,你错过了一堆结束),这给你解析错误.

此外,您可以将其缩写为

if (!isset($_POST['agree'], $_POST['name'], ...))
Run Code Online (Sandbox Code Playgroud)

要么

if (array_diff(array('agree', 'name', ...), array_keys($_POST)))
Run Code Online (Sandbox Code Playgroud)

请注意,尽管所有这些可能都没有测试您要测试的内容.如果您有表单,则将设置所有这些字段.除非用户主动操作表单,否则将使用值""(空字符串)提交所有字段,这将isset返回true.您正在寻找empty或更多的定制测试.


phi*_*hag 9

嗯,如果你更正了括号并省略了最后一个||,这有效的PHP代码:

if (isset($_POST['submit'])) {
   if (!isset($_POST['agree']) || 
       !isset($_POST['name']) || 
       !isset($_POST['email']) ||  
       !isset($_POST['title']) ||  
       !isset($_POST['program']) || 
       !isset($_POST['course'])  ||  
       !isset($_POST['file'])
   ) {
       echo '<font color="red">Please complete all required fields</font><br>';
   }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,该<font>元素已被弃用,而是使用CSS.