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

    +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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    function _bool($var){
      if(is_bool($var)){
        return $var;
      } else if($var === NULL || $var === 'NULL' || $var === 'null'){
        return false;
      } else if(is_string($var)){
        $var = trim($var);
        if($var=='false'){ return false;
        } else if($var=='true'){ return true;
        } else if($var=='no'){ return false;
        } else if($var=='yes'){ return true;
        } else if($var=='off'){ return false;
        } else if($var=='on'){ return true;
        } else if($var==''){ return false;
        } else if(ctype_digit($var)){
          if((int) $var)
            return true;
            else
            return false;
        } else { return true; }
      } else if(ctype_digit((string) $var)){
          if((int) $var)
            return true;
            else
            return false;
      } else if(is_array($var)){
        if(count($var))
          return true;
          else
          return false;
      } else if(is_object($var)){
        return true;// No reason to (bool) an object, we assume OK for crazy logic
      } else {
        return true;// Whatever came though must be something,  OK for crazy logic
      }
    }

    Я, конечно, понимаю, не во всех школах учат использованию массивов...

    Запостил: RaZeR, 15 Декабря 2012

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

    • Какой полет мысли!
      Ответить
    • Похоже на какаой-то один большой бульщит
      Ответить
    • Предложение автору - дописать поддержку "да/нет" на других языках помимо английского. Русский, франзцуский, японский, китайский...

      P.S. А вообще это что-за борец с ветряными мельницами динамической типизацией?
      Ответить
      • http://php.net/manual/ru/function.is-bool.php#93165
        Черпаю вдохновение в комментах, так сказать. Порой встречаются такие вот жемчужины.
        Ответить
        • It's quicker to strictly compare a value to TRUE and FALSE, than using is_bool(), because it's a function.
          <?php
          if (is_bool($var)) { // 100% of time
          }
          
          if ($var === true || $var === false) { // 50% of time, if $var is true and 75% of time if $var is false.
          
          }
          ?>
          Как же пыхеры любят экономить на спичках...
          Ответить
          • > Как же пыхеры любят экономить на спичках...
            Это единственное, что им остаётся, ведь O(n^3) алгоритмы такие меееееееееедленные
            Ответить

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