Помогите понять как работает кусок кода

Тема в разделе "PHP", создана пользователем verfaa, 20 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    371
    Симпатии:
    41
    Привет)
    При просмотре исходного кода нескольких скриптов постоянно натыкаюсь на конструкцию вида
    PHP:
    $sel = isset( $_POST['sel'] ) ? $_POST['sel'] : isset( $_GET['sel'] ) ? $_GET['sel'] : "";
    Я никак не могу понять смысл подобной конструкции, какую роль выполняют знаки вопроса и двоеточия?
    Это сокращённая форма написания какого-то цикла такая? Прочитал уже больше половины книги Котерова PHP 5 в подлиннике, но с разъяснением подобнй конструкции там нигде не встречался. Помогите плиз)

    Вот ещё примеры в скрипте нашёл
    PHP:
    $icon_path $row['big_icon_path'] ? $row['big_icon_path'] : $settings['photos_default'];
    PHP:
    $_SESSION['language_cd'] = intval$rs->fields[0] ) ? intval$rs->fields[0] ) : $config['default_lang'];
     
  2. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    PHP:
    $sel = isset( $_POST['sel'] ) ? $_POST['sel'] : isset( $_GET['sel'] ) ? $_GET['sel'] : "";  

    if (isset( 
    $_POST['sel'] )){
       
    $sel=$_POST['sel'];
    }elseif(isset( 
    $_GET['sel'] )){
       
    $sel=$_GET['sel'];
    }else{
       
    $sel="";
    }
     
    verfaa нравится это.
  3. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    это называется тернарный оператор
    PHP:
    ( ($expression) ? ($value1) : ($value2) )
    сперва вычисляется выражение перед знаком вопроса($expression), и приводится к true или false
    если истинно, то все выражение вместе будет равно $value1
    Если же $expression ложно, то все вместе выражение будет возвращать $value2

    рекомендуется помещать тернарный оператор в круглые скобки.
    связано это с тем, что у него три операнда(в отличии например от сложения), и не всегда лекго без скобок уследить за порядком его вычисления
     
    verfaa нравится это.
Статус темы:
Закрыта.