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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    if(strlen(trim($row['article']))!=0)
    {
     // Some action
    }

    empty? не, это из будущего.
    Суки! Сколько можно это писать!

    Запостил: Zerstoren, 26 Января 2012

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

    • ты еще про проверку мыла регуляркои вспоми)))
      Ответить
    • Zerstoren

      Ну а если в $row['article'] будут пробелы находиться то ваш код с empty не сработает. И вообще empty нужно пользоваться когда толком не знаешь, определена ли переменная. А тут все четко, нужно лишь обрезать строку от лишних боковых пробелов и глянуть, осталось ли что то. Не говнокод, минусую!

      Да, еще если $row['article']="0" то empty тоже не сработает!
      Ответить
      • Что за ахинею вы несете?

        >>Ну а если в $row['article'] будут пробелы находиться то ваш код с empty не сработает.
        Я ничего не сказал про trim, он здесь нужен и это правильно.

        >>И вообще empty нужно пользоваться когда толком не знаешь, определена ли переменная
        Путаете с isset

        >>Да, еще если $row['article']="0" то empty тоже не сработает!
        Представьте себе, так и должно быть! Не сработает, но зачем ему срабатывать? Переменная не пуста, у нее длинна в 1 байт.


        Соль empty в том, что если будет найден первый байт, она сразу вернет true. В отличии от strlen, который вернет количество байт в строке.
        Ответить
        • Как же вы тогда применили бы empty в этом примере?
          Ответить
          • if( !empty(trim($row['article'])) )
            {
             // Some action
            }


            Т.е. Отрицание пустоты, если строка как раз не пуста, то оно выполнит действие.
            Во первых, оно быстрее, не значительно, но быстрее.
            Во вторых логически правильно
            В третьих лаконично.

            Вообще, сайт с которого я выдрал этот код - один сплошной артефакт говна.
            Только файл index.php весит 110кб. Перемешка HTML, JS, CSS и PHP кода.
            Ответить
            • Ох уж насмешили))))
              Вы сами пробовали исполнить такой то код?
              Ответить
            • Вам бы справочник почитать про эту функцию, и что она может принимать в аргументы.
              Ответить
            • вряд ли ему важно отловить 0 0,0 и тд по ману
              так что emty в самый раз
              Ответить
            • Fatal error
              Вместо того, чтобы обсирать других — почитайте мануал.
              Ответить
        • >> >>Да, еще если $row['article']="0" то empty тоже не сработает!
          >> Представьте себе, так и должно быть! Не сработает, но зачем ему срабатывать? Переменная не пуста, у нее длинна в 1 байт.

          $var=' '; // пробел
          print !empty($var)?'is not empty':'is empty'; // выдает is not empty
          print '<br />';

          $var='0'; // (string)ноль
          print !empty($var)?'is not empty':'is empty'; // выдает is empty
          print '<br />';

          $var=0; // (int)ноль
          print !empty($var)?'is not empty':'is empty'; // выдает is empty

          Как видите, все три варианта переменных длинной в 1 байт.. Но результат функции empty не везде одинаков!
          Ответить
    • объясни, автор, как сделать идентичную проверку с помощью empty?
      Ответить
      • Он уже писал [url=http://govnokod.ru/9230#comment128146]коммент[/url]
        Согласен, приведенный говнокод корявенько выглядит. И что приведенный пример с empty() выглядит как минимум более лаконично и более эффективно (по скорости отработки). Но чего сразу кричать "Говнокооод! Говнокоооод!" Все такие, блин, правильные. Соревнование что-ли - кто круче обхамит чужой код? Уж по мелочам то придираться не стоит, наверное.
        Ответить
        • Вы что все здесь не догоняете?!!!, что в функцию empty нельзя передавать результат работы другой функции напрямую! Только переменные, или будет fatal error!
          Ответить

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