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

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function boolConvert($value){
            if(strtolower($value)=='true')
                return 1;
            if(strtolower($value)=='false')
                return 0;
            return $value;
        }

    Запостил: GoodTalkBot, 05 Марта 2014

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

    • тест на программиста
      Ответить
    • Ну, от преобразования типов в PHP можно ожидать вообще чего угодно, так что преобразование строки в бул лучше вручную закодировать. Вот return $value смущает...
      Ответить
      • Ну, если ты не буль ему подсунешь - вернёт, что дал.
        Ответить
        • я бы эксепшн, или null вернул бы
          Ответить
        • метод используется при переборе элементов массива, и нужно чтобы строки true/false преобразовались в 1/0 всё другое оставить без изменений. так что тут бросать исключения нет смысла, так же как и возвращать null :)
          Ответить
      • Ёба, а нормального преобразования в бул нету???
        Ответить
        • Есть (bool), но оно во-первых нинужно, т.к. условия и операторы и без явного каста в бул работают точно так же, а во-вторых 'false' будет считать true (т.к. непустая строка это true).
          Ответить
          • > 'false' будет считать true
            Зато '0' будет считать false.
            Ответить
          • > а во-вторых 'false' будет считать true
            И?
            Ответить
            • Само по себе это логично. Вот только когда у нас появляется (bool) '0' === false, логика моментально улетучивается.
              Ответить
              • А что, вообще никак по-нормальному в рнр не разделить строки и числа?
                Ответить
                • Способ есть: http://ru2.php.net/manual/ru/function.is-string.php

                  Надо заметить, что is_numeric (в отличие от предыдущей функции) не отличает от чисел строки, состоящие из одних цифр.

                  Кстати, == означает сравнение после приведения типов не только в пышечке, но и ещё в куче ненужных языков типа ECMAScript и Java.
                  Ответить
                  • Джава то тут каким боком? ;)
                    Ответить
                    • Только таким, что == делает совсем не то, что ожидает новичок.

                      А вообще вычёркиваем её из этого списка. В ней хотя бы типизация нормальная, а не ненужная слабая.
                      Ответить
            • Ну а автору, судя по коду, нужно считать 'false' как false.
              Ответить
              • Так может, это автор мудак? В питоне такой подход возражений не вызывает.
                Ответить
                • Если автору нужно распарсить текст - он уже мудак?
                  Ответить
                  • как вообще можно из функции, которая должна преобразовывать к булевому типа возвращать 1, 0, и любую другую херню? я конечно понимаю, что php не строготипизированный, но это же фарш работы с разными типами данных.
                    Ответить
                    • У одной пыхомакаки пригорело (которая поставила минус).
                      Ответить
                  • Автор мудак, потому что использует строки вместо булевых переменных. Или их в пыхе нет?
                    Ответить

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