"PHP" / Говнокод #11859 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 zubik, (Updated )

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

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

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

    Отдельным постом, пожалуйста.
    Ответить
    • строки...
      при детальном исследовании массива оказалось, что периодически там есть не просто "число", а вот например такое: "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 - тупанул, думал, что годы склоняются по первому числу в группе.
                Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8