#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; |
|