1. PHP / Говнокод #11859

    +55

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    if(strlen($arItem["PROPERTIES"]["AGE"]["VALUE"])>0)
     {
            if ($arItem["PROPERTIES"]["AGE"]["VALUE"]=="1" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="21" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="31" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="41" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="51" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="61" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="71" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="81" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="91" ||
                $arItem["PROPERTIES"]["AGE"]["VALUE"]=="101"
            )
                $strAge="<b>Рекомендуемый возраст:</b> с ".$arItem["PROPERTIES"]["AGE"]["VALUE"]." года";
            else
                $strAge="<b>Рекомендуемый возраст:</b> с ".$arItem["PROPERTIES"]["AGE"]["VALUE"]." лет";
    }

    substr? не, не слышал...

    Запостил: zubik, 02 Октября 2012

    Комментарии (15) RSS

    • Тут не substr нужен, а нормальные plural forms.

      P.S. Как грит яндекс, офигенно будет setlocale + ngettext.
      Ответить
      • В Qt с числительными проблема согласования решается тремя формами, которые можно задать при переводе (например, "%n слот", "%n слота", "%n слотов"), а правила выбора соответствующей числу формы зависят от языка.
        Но вот можно придумать еще нюанс:
        "С 99 лет"
        "Со 100 лет"
        Ответить
    • >substr
      Это для того чтобы найти последнюю цифру числа?

      Отдельным постом, пожалуйста.
      Ответить
      • Особо феерично пролетит на 11.
        Ответить
      • строки...
        при детальном исследовании массива оказалось, что периодически там есть не просто "число", а вот например такое: "10-15"
        Ответить
        • И чем тут тогда поможет substr? Плюсую 3.14159265 и жду отдельного поста под говнецо с substr.
          Ответить
          • оки,
            substr($txt,-2)=='11'?'...':substr($txt,-1)!='1' ? 'let' : 'goda' ;

            и что тут не так? тянет на отдельный пост?
            Ответить
            • не забывайте склонять
              трассировка того, что я написал
              с 0 let
              с 1 goda
              с 2 let
              с 3 let
              с 4 let
              с 5 let
              с 6 let
              с 7 let
              с 8 let
              с 9 let
              с 10 let
              с 11 let
              с 12 let
              с 13 let
              с 14 let
              с 15 let
              с 16 let
              с 17 let
              с 18 let
              с 19 let
              с 20 let
              с 21 goda
              с 22 let
              с 23 let
              ......
              Ответить
            • Ну по смыслу кода, раз склонение в 10-15 идет по последнему числу, претензий нет.

              А вот конструкции с двумя тернарниками в одном выражении мое сознание автоматически помечает как говно. Особенно в ПХП, с его кривой связностью в тернарниках, на которую вы, кстати, и нарвались написав это выражение, которое работает по счастливой случайности, и эквивалентно вот такому коду:
              (substr($txt,-2)=='11'?'...':substr($txt,-1)!='1') ? 'let' : 'goda'
              Поэтому эта ваша строчка заслуживает почетное место в архиве говнокода.

              P.S. Более-менее кошерный вариант с substr:
              (substr($txt, -2) == '11' || substr($txt, -1) != '1') ? 'лет' : 'года'
              Ответить
              • ветка началась с того что любое решение с помощью substr будет не что иное как говнокод, закончилась тем, что не понравились тернарики, тоесть ушли от темы :) ок, можно переписать в более привычные if , но думаю не стоит. Тут все ясно...

                p.s. согласен что ваш вариант более кошерный...
                Ответить
                • Насчет substr - тупанул, думал, что годы склоняются по первому числу в группе.
                  Ответить

    Добавить комментарий