15:15 Тернарный оператор (тернарная операция) |
#6 Тернарный оператор (тернарная операция)
Очень удобная штука ! значительно сокращает (упрощае читабильность) код.
Итак, представим условие, где нам нужно проверить например пришедшие данные с формы, например: У меня есть привычка, не знаю хорошая или плохая, но по возможности я деаю форму обработчиком в дном файле.
Цитата | # Форма <form action="" method="POST"> Имя: <input type='text' name='user' /><br /> Комментарий: <textarea name="comment"> </textarea><br /> <input type="submit" name="send" value="отправить"/> </form> |
1. Обработчик, на той же странице, if - else.
Цитата | <?php // Проверим нажата ли кнопка отправить <?php if(isset($_POST['send'])) { # Проверим имя отправителя if(empty($_POST['name'])) echo "<span style='color:red'>Не заполнено поля Имя!<br /></span>"; else $name = trim($_POST['name']); # Проверяем данные на ваше усмотрение ... # Поверим наличие текста комментария if(empty($_POST['comment'])) echo "<span style='color:red'>Отсутствует текст комментария!<br /></span>"; else $comment = trim($_POST['comment']);
# Если оба поля заполнены - работаем с данными if($name AND $comment) { # Работаем с данными, пишем в файл, в БД и т.д. echo "<span style='color:green'>Спасибо, ваш комментарий добавлен!</span>"; } } |
2. Определение переменных с использыванием тернарного оператора
Цитата | <?php $name = isset($_POST['name']) ? trim($_POST['name']) : null; $comment = isset($_POST['comment']) ? trim($_POST['comment']) : null;
if(isset($_POST['send'])) { if(!$name) echo "<span style='color:red'>Не заполнено поля Имя!<br /></span>"; if(!$comment) echo "<span style='color:red'>Отсутствует текст комментария!<br /></span>"; if($name AND $comment) { # Работаем с данными, пишем в файл, в БД и т.д. echo "<span style='color:green'>Спасибо, ваш комментарий добавлен!</span>"; } } ?> |
Разбор полётов:
Цитата | $name = isset($_POST['name']) ? trim($_POST['name']) : null; |
А работает это так: переменная = условие ? если усовие выполнено : если условие не выполнено
Условие могут быть и по длиннее:
Цитата | $name = (isset( $_POST['name'] AND strlen( $_POST['name']) > 3)) ? $_POST['name'] : null; |
|
| Цитата || Печать || Комментарии:4 | |
Написал:
inpost - 13:07 09/09/2011 · Журнал · Профиль · |
Приучи себя брать тернарный оператор в скобки, иначе столкнёшься в дальнейшем с некоторыми проблемами.
|
| Цитата | |
Написал:
Игорь_Vasinsky - 13:10 09/09/2011 · Журнал · Профиль · |
как именно? это простой пример, в примерах по сложнее - без скобок не как не обойтись.
|
| Цитата | |
Написал:
inpost - 13:46 09/09/2011 · Журнал · Профиль · |
$name = (isset($_POST['name']) ? trim($_POST['name']) : null); echo (isset($_POST['name']) ? trim($_POST['name']) : null);
|
| Цитата | |
Написал:
Игорь_Vasinsky - 13:49 09/09/2011 · Журнал · Профиль · |
ага, т.е. всю тернарную операцию брать в скобки... не вижу ничего плохого при простых операциях их опускать, как и говорил ранее, скобками я не принебригаю если условия сложнее (вложенные условия, объеденнённые условия и т.д.)
Привык уже к такому синтаксису. За совет спасибо.
|
| Цитата | |
|
|
|