Тернарный оператор ? в php
X
Заказать сайт
Заказать сайт

Тернарный оператор ? в php

Тот кто серьезно изучает php постоянно должен совершенствовать свои знания, изучать новые функции и возможности этого языка программирования. Сегодня речь пойдет о тернарном операторе, который может повстречаться на пути новичка.

Если говорить кратко, то такой оператор является сокращением записи if() ... else ...

Общий синтаксис выглядит так: $a = (условие) ? $b : $c;

Что переводится как, если условие в скобках будет выполнено (true), то переменной $a будет присвоено значение переменной $b, а если нет, то $c

Пример:

$test = 'сто';
$a = ($test == 'сто') ? 'да' : 'нет';
echo $a; //выведет да

Так как условие у нас выолняется, то $a будет равно значению "да". Последние две строки можно было своместить вот так: echo ($test == 'сто') ? 'да' : 'нет'; Ведь мы все равно ставили переменную $a на печать и дополнительно ее задавать не нужно.

Тернарный оператор на практике

В своих скриптах я не часто исользую тернарные операторы, но иногда они просто не заменимы. Например, представьте форму, в которой есть input поля. Бывает, что пользователь не верно вводит капчу и чтобы не потерять уже им введенные данные (например поля имя, логин) я использую обратную передачу $_POST значений в value с таким условием: echo (isset($_POST['name'])) ? $_POST['name'] : 'Введите имя'; Т.е. если пользователь что-то вводил в поле, он его не потеряет при обновлении страницы, а если ничего не вводил - получит текст предупреждения.

Вложенность тернарных операторов в php

Особенностью операторов if является возможность задавать условия типа else if. Тернарные операторы могут работать по такому же принципу. Посмотрите два примера, сначала со стандартным if, а затем с тернарным оператором:

//if else
$zn = 'Два';
if($zn == 'Сто') echo 'Да = Сто';
else if($zn == 'Два') echo 'Да = Два';
else echo 'По умолчанию';

//тернарный оператор
$zn = 'Два';
echo ($zn == 'Сто') ? 'Да = Сто' :
(($zn == 'Два') ? 'Да = Два' :
'По умолчанию');

Последний пример является аналогом if оператора. Проверки идут так: в первых скобках $zn не равен "Сто", поэтому обрабатывается значение после двоеточия, в котором вторые скобки (аналог else if) с новой проверкой, где $zn действительно равен "Два" - срабатывает условия и выводится значение "Да = Два". Если $zn нигде не выполнил бы условий, то вывелось бы "По умолчанию".

Вот такие они тернарные операторы одновременно простые и сложные. Вложенность, как в последних примерах не рекомендую использовать, так как это запутывает код. Еще одним минусом таких операторов по сравнению с if является отсутствие возможности использования фигурных скобок, чтобы можно было сделать несколько действий сразу, если бы условие выполнилось или нет.

Поэтому тернарные операторы надо использовать в простых случаях, в не сложных задачах присвоения переменной или вывода ее значения.

| | Тернарный оператор ? в php | Тот кто серьезно изучает php постоянно должен совершенствовать свои знания, изучать новые функции и возможности этого языка программирования. Сегодня | https://blogprogram.ru/wp-content/uploads/2017/09/797-131x131.jpg

2 коммент. на “Тернарный оператор ? в php”

  1. Андрей:

    //тернарный оператор
    $zn = 'Два';
    echo ($zn == 'Сто') ? 'Да = Сто' :
    ($zn == 'Два') ? 'Да = Два' :
    'По умолчанию';

    тут не совсем верно будет, сейчас не зависимо от того что стоит в переменной $zn Сто или Два результат будет один и тот же 'Да = Два'.

    //тернарный оператор
    $zn = 'Сто';
    echo ($zn == 'Сто') ? 'Да = Сто' :
    ($zn == 'Два') ? 'Да = Два' :
    'По умолчанию';
    Это происходит из-за того что на первое условие мы получаем ответ true, а второе условие выглядит уже не таким образом
    ($zn == 'Два') ? 'Да = Два' :
    'По умолчанию';
    а таким
    true ? 'Да = Два' :
    'По умолчанию';
    Итог в ответе будет 'Да = Два'

    Тут надо поставить еще пару скобок
    $zn = 'Два';
    echo ($zn == 'Сто') ? 'Да = Сто' :
    (($zn == 'Два') ? 'Да = Два' :
    'По умолчанию');

Добавить комментарий для blogprogram.ru Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>