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

    +1

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    function getCartMiniViewDisplayString($cart_entries) {
        $count = $cart_entries->getProductCount();
        $suffix = "";
        $remainder = $count % 10;
        switch($remainder) {
            case 1:
                $suffix = " товар";
                break;
            case 2:
            case 3:
            case 4:
                $suffix = " товара";
                break;
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            case 0:
                $suffix = " товаров";
                break;
        }
        return $count . $suffix;
    }

    Мой, переписывать с if в лень.

    Запостил: OlegUP, 06 Апреля 2019

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

    • function getCartMiniViewDisplayString(&$cart_entries)
      Ответить
    • Бывает.
      Ответить
    • 11 товар
      12 товара
      13 товара
      14 товара
      Ответить
      • function getCartMiniViewDisplayString(&$cart_entries) {
            $count = $cart_entries->getProductCount();
            $num_x = $num % 10;
            if ($num_x > 1 && $num_x < 5) return $count . " товара";
            if ($num_x == 1) return $count . " товар";
            return $count . " товаров";
        }
        Ответить
        • function getCartMiniViewDisplayString(&$cart_entries) {
              $count = $cart_entries->getProductCount();
              $num = $count % 100;
              $num_x = $num % 10;
              if ($num > 10 && $num < 20) return $count . " товаров";
              if ($num_x > 1 && $num_x < 5) return $count . " товара";
              if ($num_x == 1) return $count . " товар";
              return $count . " товаров";
          }
          Ответить
          • f =: {::&('товар';'товаров';'товара')@((~:&1 + e.&2 3 4)@|~&10 +. e.&(11+i.9)) "0
               f 0 1 6 15
            товаров
            товар    
            товаров
            товаров
               
               g =: (,&' '@": , f)"0
               g i.30
            0 товаров 
            1 товар     
            2 товара   
            3 товара   
            4 товара   
            5 товаров 
            6 товаров 
            7 товаров 
            8 товаров 
            9 товаров 
            10 товаров
            11 товаров
            12 товаров
            13 товаров
            14 товаров
            15 товаров
            16 товаров
            17 товаров
            18 товаров
            19 товаров
            20 товаров
            21 товар    
            22 товара  
            23 товара  
            24 товара  
            25 товаров
            26 товаров
            27 товаров
            28 товаров
            29 товаров
            Ответить
            • Это PHP?
              Ответить
              • «C++30».
                Ответить
              • Вот приблизительный перевод:
                <?php
                
                function f($x){$r=$x%10;return array("товар","товаров","товара")[$x>10&&$x<20?1:($r!=1)+($r>1&&$r<5)];}
                $a = array(0,1,6,15);
                array_walk($a, function($x){echo f($x)."\n";});
                echo "\n";
                
                function g($x){return $x.' '.f($x);}
                $a = range(0,30);
                array_walk($a, function($x){echo g($x)."\n";});
                https://ideone.com/tzsT66
                Ответить
                • А если немного точнее, то вместо тренарника должно быть:
                  gcd($x>10&&$x<20,($r!=1)+($r>1&&$r<5))
                  Ответить
                • Ой, ведь в проверке $x>10&&$x<20 нужно вместо $x проверять $x%100
                  Ответить
                • Мне не по себе от этого кода. array_walk по массиву или по range вместо обычного цикла –— это мой стиль.

                  P.S. Порылся в бормандовском стоке. Здесь вообще не так много юзеров использовали array_walk.
                  Ответить
              • https://www.jsoftware.com/zippy.gif
                Ответить
                • Она ещё прозрачная. Чтобы её нормально разглядеть, нужно подходящий фон подложить. Какой анскилл )))
                  Ответить
    • Если честно, на 1С похоже.
      Ответить

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