Альтернатиный синтаксис if else

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

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

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    106
    Симпатии:
    47
    Спасите!
    Уже час пытаюсь найти, как вместо конструкции вида if(услвие){дйствие} else{дйствие}
    писать чтото в духе (условие) ? (дйствие) : (дйствие)

    Из головы вылетело как-то.. а нагуглить немогу.
     
  2. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    ни с каким другим языком не перепутал ??
    у тебя веть получается операторов вообще нет o_O, плюс знак вопроса который точно пыху непонравится.

    и чем собственно if и else не угодили ?? тамже ещё есть elseif - может поможет :)
    ну и or и and никто не отменял :)

    PHP:
    if(услвие){дйствие} elseif(услвие2){дйствие2}elseif(услвие3){дйствие3}
     
  3. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Я очень надеюсь что это нужно не для реального проекта, а для самообразования или разбора чужого кода.
    Из за этого страдает читабельность кода, иногда очень сильно. нНастоятельно не рекомендую применять в реальных проектах.
     
  5. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    знающие
    а нельзя прояснить для чего это вообще ??
    для не просвящённых так сказать...
    синтаксис не явный ... только запутывает всё и добавляет костылей

    в каких случаях это удобно применять ??
     
  6. ToyotaLC

    ToyotaLC

    Регистр.:
    1 авг 2006
    Сообщения:
    176
    Симпатии:
    87
    похоже для того, чтобы привязать клиента к себе любимому:)
    потому что в такой каше потом фиг что разберешь, если не сам писал код
     
  7. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    такие вот ребусы
    PHP:
    <?
    $a=10;
    $b=20;
    $c=0;
    if(
    $a>$b)$c=1;
    //или
    $c=$a>$b?1:$c;
    echo 
    $c;

    if(
    $a>$b){$c=1;}else{$c=2;}
    //или
    $c=$a>$b?1:2;
    //или
    $a>$b $c=$c=2;
    echo 
    $c;

    if(
    $a>$b){$c=1;}elseif($a==$b){$c=2;}elseif($a==20){$c=3;}
    //или
    $c=$a>$b?1:$a==$b?2:$a==20?3:$c;
    echo 
    $c;

    //и т. д.
    echo $a!=$b || $a!=$c 2;

    $a!=$b || $a!=$c $c=$c=2;

    ?>

    <?=$a>$b?1:2 ?>

    <?=$a>$b?min($a,$b):max($a,$b?>
    <?=$a
    >$b && $a==10 $a $b ?>
     
    Mapkyc и o_nix нравится это.
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    А ты мне скажи, зачем в пхп сделали поддержку goto? http://www.php.net/manual/en/control-structures.goto.php :D

    это было добавлено как поддержка альтернативного синтаксиса, из других языков. чтобы те, кто использовал аналогичное из c# не сильно страдали. И как вариант компактно записать условие, не тратя лишние символы (привет 90-е). Да и есть мнение, что тем больше различных вариантов, кторыми можно реализовать такие вещи, тем более широк и ярок язык программирования :D
    Правда, такое лучше не применять, т.к. это причисляется к говнокоду
     
  9. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    goto полезная штука позволяет в бинарниках делать немыслемые ветвления в алгоритме.
    он очень полезен когда софт многопоточный ну а php просто подхватили идею для большей с++ похожести.
    плюс ко всему goto есть даже в виндовых батниках.
    насчёт Ternary Operator
    смысл вижу есть только при вставках в шаблон чегонить типа
    PHP:
    <?=$a>$b?1:2 ?>
    коротко и шаблон не засоряет.
     
  10. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    не знаю как вам, но мне такая конструкция нравится, переодически ей пользуюсь, в большинстве современных языках она присутствует.
    Если знать что это такое, и использовать аккуратно (имеется ввиду, не использовать вложенности, или использовать для присвоения констант), то запутаться в ней довольно проблематично

    http://ru.wikipedia.org/wiki/Тернарная_условная_операция
     
Статус темы:
Закрыта.