PHP оператор if, охватывающий несколько строк? - PullRequest
2 голосов
/ 07 августа 2011

Я пытался заставить это работать, но я продолжаю получать ошибки синтаксического анализа:

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> ';
    }
}

Возможно ли сделать что-то подобное в PHP?Это сделает мой код более читабельным.

Ответы [ 4 ]

12 голосов
/ 07 августа 2011

Да, это вполне возможно, но у вас есть последний трейлинг || без следующего выражения, и вам не хватает связки закрытия ), что дает вам ошибку разбора.

ТакжеВы можете сократить это до

if (!isset($_POST['agree'], $_POST['name'], ...))

или

if (array_diff(array('agree', 'name', ...), array_keys($_POST)))

Обратите внимание, что все это, вероятно, не проверяет то, что вы хотите проверить.Если у вас есть форма, все эти поля будут set .Если пользователь не будет активно манипулировать формой, все поля будут отправлены со значением "" (пустая строка), что означает isset return true.Вы либо empty, либо для более индивидуальных тестов.

9 голосов
/ 07 августа 2011

Умм, если вы исправите скобки и пропустите последние ||, это будет действительным кодом 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>';
   }
}

Кстати, элемент <font> был устарел , вместо этого используйте CSS.

4 голосов
/ 26 мая 2013

Не будет ли проще сделать это так?

foreach(array('submit','agree','name','email','title','program','course','file') as $value) {
    if(!isset($_POST[$value])) {
        /* insert form incomplete routine here */
        }
    }
2 голосов
/ 07 августа 2011

Вам не хватает закрывающих скобок почти для всех ваших isset с. У вас также есть дополнительный '||' в конце.

Примечание: сообщение об ошибке говорит об этом очень четко:

 Parse error: syntax error, unexpected T_IS_EQUAL, expecting ',' or ')' in ... on line 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...