mJournal
· Форум · Участники · Журналы · Случайный журнал ·
Главная -> Журналы -> Игорь_Vasinsky -> 15 июня 2011 -> Комментарии
PHP во сне и на яву
 
15 июня 2011
  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  · Журнал · Профиль ·
ага, т.е. всю тернарную операцию брать в скобки... не вижу ничего плохого при простых операциях их опускать, как и говорил ранее, скобками я не принебригаю если условия сложнее (вложенные условия, объеденнённые условия и т.д.)

Привык уже к такому синтаксису. За совет спасибо.


| Цитата |

 
Игорь_Vasinsky


★ЛжеЭксперт★


Регистрация 14.03.2010
E-mail Нет доступа
Приват Отправить
WWW Нет данных
ICQ Нет данных
Профиль Перейти
Рейтинг
Рейтинг: 4.4    Голосов: 18
Список друзей
inpost quickxyan sharki
TMake twin zvezda_t
ИНСИ
Календарь
апрель 2024
пн вт ср чт пт сб вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
Статистика
Просмотры
Сегодня: 1
Всего: 79757
Хосты
Сегодня: 1
Всего: 79733
Последний комментарий
[6] Отладка скриптов PHP...
16.12.2011 00:05
Написал: Игорь_Vasinsky
[4] Тернарный оператор (...
09.09.2011 13:49
Написал: Игорь_Vasinsky
[4] Загрузка картинки дл...
09.09.2011 13:09
Написал: Игорь_Vasinsky
[2] Зашита от F5 (повто...
21.03.2010 00:30
Написал: Игорь_Vasinsky