2014-01-13 3 views
0

Все в порядке?Завершение работы if, if else, else block in php

 

$error_msg = ""; 
if(!isset($_POST["name"]) || empty($_POST["name"])) { 
    $error_msg="Not set name"; 
    exit(); 
} else if(!isset($_POST["radio1"]) || empty($_POST["radio1"])) { 
    $error_msg="Not set question1"; 
    exit(); 
} else if(!isset($_POST["radio2"]) || empty($_POST["radio2"])) { 
    $error_msg="Not set question2"; 
    exit(); 
} else { //... some code here } 
//continues here after exit??? 
//Somewhere code printing first cahched error message 
 

Я не уверен в поведении выхода() здесь. То, что я хочу сделать, - это когда я заканчиваю первое условие, я устанавливаю $ error_msg и выхожу из if, else if, else block и продолжает выполнение после него в строке, помеченной как «продолжается здесь после выхода»? Где напечатать сообщение об ошибке и делать другие вещи, как печать формы и т.д.

Edit: Для реакции - я вроде думал, что это, вероятно, конец сценария, но. Поэтому я знаю, что ошибался, но на самом деле мой вопрос заключался в том, что делать, чтобы закончить только «if else block». Что будет работать для меня? Что-то вроде перерыва, возвращение? Причина, если если не указано имя и радио2, сообщение об ошибке будет «Не задано question2» вместо «Не задано имя», потому что я хочу только первую произошедшую ошибку.

+2

'выхода()' будет «выхода» скрипт, а не только оператор 'if()'. Если какое-либо из этих условий истинно, сценарий заканчивается. Может быть, чтение [документации] (http://uk1.php.net/exit) в порядке? – George

+1

Нет необходимости в 'exit()' удалить их все – superphonic

+0

Лучшее место для этого вопроса http://codereview.stackexchange.com/ – aldanux

ответ

4

Нет необходимости в exit() удалить их все. Нет необходимости «завершать» блок if else. Однажды любой Состояние выполнено, оно заканчивается.

$error_msg = ""; 
if(!isset($_POST["name"]) || empty($_POST["name"])) { 
    $error_msg="Not set name"; 
} else if(!isset($_POST["radio1"]) || empty($_POST["radio1"])) { 
    $error_msg="Not set question1"; 
} else if(!isset($_POST["radio2"]) || empty($_POST["radio2"])) { 
    $error_msg="Not set question2"; 
} else { 

    // Code to run if all post variables are set correctly. 

} 

if (!empty($error_msg)) { 

    // Display error message - echo $error_msg; 

} 
+0

Ты, но не отвечаешь на мой вопрос. Я отредактировал его и уточнил, что было с самого начала. – user1097772

+0

Это ответ на ваш вопрос. Удалите все 'exit()', они не нужны. 'If ​​else' прекращает выполнение после выполнения любого условия. Мой код выше сделает то, что вам нужно. – superphonic

+0

Re edit: Он заканчивает выполнение всего блока? Не будет проверять другое, если? Я привык писать программы в java и имеет другое поведение. – user1097772

0

exit() закончится остальной PHP скрипт, вам не нужно использовать его в этом контексте.

Условный оператор будет обрабатывать только else и else if сек, если условие (s) над ним не удается

Прочитайте это для получения дополнительной информации о exit(): PHP.net Exit()