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

    +185

    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
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    <?php 
    
    for ($i=1;$i<=31;$i++) {         // дни
    for ($j=1;$j<=12;$j++) {        // месяцы
    for ($k=70;$k<=99;$k++) {    // годы
    
    $i0=$i; // сохраняем оригинальные значения 
    $j0=$j; // переменных i и j
    
    if ($i=1) { $i="01"; }
    if ($i=2) { $i="02"; }
    if ($i=3) { $i="03"; }
    if ($i=4) { $i="04"; } // конвертируем их значения 
    if ($i=5) { $i="05"; } // в двухзначную форму
    if ($i=6) { $i="06"; }
    if ($i=7) { $i="07"; }
    if ($i=8) { $i="08"; }
    if ($i=9) { $i="09"; }
    
    if ($j=1) { $j="01"; }
    if ($j=2) { $j="02"; }
    if ($j=3) { $j="03"; }
    if ($j=4) { $j="04"; }
    if ($j=5) { $j="05"; }
    if ($j=6) { $j="06"; }
    if ($j=7) { $j="07"; }
    if ($j=8) { $j="08"; }
    if ($j=9) { $j="09"; }
    
    echo("$i$j$k<br>"); // выводим дату: число-месяц-год (год двузначный с 70 по 99)
    
    $i=$i0; // востанавливаем оригинальные 
    $j=$j0; // значения переменных i и j
    
    }}}
    
    for ($i=1;$i<=12;$i++) {
    for ($j=13;$j<=31;$j++) {     // начинаем с 13 чтобы не повторяться в датах
    for ($k=70;$k<=99;$k++) {
    
    $i0=$i;
    $j0=$j;
    
    if ($i=1) { $i="01"; }
    if ($i=2) { $i="02"; }
    if ($i=3) { $i="03"; }
    if ($i=4) { $i="04"; }
    if ($i=5) { $i="05"; }
    if ($i=6) { $i="06"; }
    if ($i=7) { $i="07"; }
    if ($i=8) { $i="08"; }
    if ($i=9) { $i="09"; }
    
    if ($j=1) { $j="01"; }
    if ($j=2) { $j="02"; }
    if ($j=3) { $j="03"; }
    if ($j=4) { $j="04"; }
    if ($j=5) { $j="05"; }
    if ($j=6) { $j="06"; }
    if ($j=7) { $j="07"; }
    if ($j=8) { $j="08"; }
    if ($j=9) { $j="09"; }
    
    echo("$i$j$k<br>"); //  дата: месяц-число-год (год двузначный с 70 по 99)
    
    $i=$i0;
    $j=$j0;
    
    }}}
    
    for ($i=1;$i<=31;$i++) {
    for ($j=1;$j<=12;$j++) {
    for ($k=0;$k<=12;$k++) {
    
    $i0=$i;
    $j0=$j;
    $k0=$k;
    
    if ($i=1) { $i="01"; }
    if ($i=2) { $i="02"; }
    if ($i=3) { $i="03"; }
    if ($i=4) { $i="04"; }
    if ($i=5) { $i="05"; }
    if ($i=6) { $i="06"; }
    if ($i=7) { $i="07"; }
    if ($i=8) { $i="08"; }
    if ($i=9) { $i="09"; }
    
    if ($j=1) { $j="01"; }
    if ($j=2) { $j="02"; }
    if ($j=3) { $j="03"; }
    if ($j=4) { $j="04"; }
    if ($j=5) { $j="05"; }
    if ($j=6) { $j="06"; }
    if ($j=7) { $j="07"; }
    if ($j=8) { $j="08"; }
    if ($j=9) { $j="09"; }
    
    if ($k=0) { $k="00"; }

    http://www.php.ru/forum/viewtopic.php?t=30748

    Запостил: Devzirom, 12 Февраля 2011

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

    • это просто вынос мозга....
      Ответить
      • это присваивание в ручную. сила же! не хватает switch сюда :)
        Ответить
    • Цитата:
      > Devzirom: "zhen, большое спасибо за код! Я давненько на говнокод не выкладывал!"
      Круто :)
      Ответить
    • Однако, какое упорство. =)
      Ответить
    • Особенно радует вот это:
      for ($i=1;$i<=12;$i++) {
      for ($j=13;$j<=31;$j++) {     // начинаем с 13 чтобы не повторяться в датах
      for ($k=70;$k<=99;$k++) {
      ...
      //Ну а вдруг?!
      if ($j=1) { $j="01"; }
      if ($j=2) { $j="02"; }
      if ($j=3) { $j="03"; }
      if ($j=4) { $j="04"; }
      if ($j=5) { $j="05"; }
      if ($j=6) { $j="06"; }
      if ($j=7) { $j="07"; }
      if ($j=8) { $j="08"; }
      if ($j=9) { $j="09"; }
      ...
      }}}
      Ответить
    • просто пиздец.
      Ответить
    • >Рабочая версия кода, рад выслушать критику про оптимизацию )

      >Не шути так... Если услышишь реальную критику, твоё ЧСВ упадёт так сильно что ты повесишься...

      >не ну я сам понимаю что проверку if ($i==1) { $i="01"; } нужно вынести за циклы
      >for ($j=хх;$j<=хх;$j++) и for ($k=хх;$k<=хх;$k++) ну а больше я косяков не вижу.
      >разве что вместо кучи if использовать elseif. Про функции я ничего не знаю поэтому
      >приходится писать код повторно, но это влияет только на размер файла а не на
      >быстродействие, т.к. какая разница процессору откуда брать код ))
      Ответить
      • можно его немного усложнить
        <?
        $start = mktime(0,0,0,1,1,2011);
        $end = mktime (0,0,0,31,12,2011);
        for ($i=$start; $i<= $end; $i += (60*60*24)) {
        echo date('d-m-y', $i);
        echo '<br>';
        }
        Ответить
        • И чем же это лучше?
          Не во всех сутках 86400 секунд, да и не стоит это вычислять каждый раз.
          Лучше strtotime('+1 day', $timestamp), не самый быстрый вариант, но самый точный и понятный
          Ответить
          • В каких сутках не 86400 секунд?
            Ответить
            • "Ты что, с Луны свалился?".
              DST же!
              Ответить
              • Я-то с Земли. Для марсиан код пишешь?
                Ответить
                • А слабо выделить предыдущее сообщение, да?
                  DST вероятно только на Марсе вводят ;-)
                  Ответить
                  • Не понятно зачем эта игра в Штирлицев.
                    А переход на зимнее время указом президента отменен :)
                    Ответить
                    • У вас может быть и отменили, но не Россией единой, как говорится. У нас в Украине всё нормально остается, хотя наш штопанный презик тоже может скопипастить ваш вариантъ.

                      P.S. задним числом тоже отменили?
                      P.P.S. не бывает "зимнего" времени, бывает "летнее", так что теперь вы будете особенно выделятся на фоне других стран и проблем будет еще больше.
                      Ответить
                      • Согласен, не единой. А не "летнее" это какое тогда?
                        Ответить
                        • Термина "зимнее время" нету, в отличии от "летнего", так что оно стандартное. Есть много стран у которых никогда и не было DST или они отказались от него в сторону стандартного, поэтому называть его "зимним" неверно ;-)
                          Ответить
                    • Ух ты, только щас узнал новость! Мне простительно, я не с РФ, за указами медведа не слежу. Получается, что московское время зимой будет на 2!!! часа опережать киевское, и это при нахождении регионов в одном часовом поясе.
                      Ответить
                      • по словам вице-президента Астрономо-геодезического объединения РФ Сергея Смирнова, заставит Петербург жить на часовом поясе Урала, а не на естественном для региона времени Пулковского меридиана. "С осени 2011 года мы будем танцевать на два такта впереди музыки природы. Мы будем вставать не то, что на рассвете, а в самую темень. Это время на Востоке считают самым тяжелым и называют "часом быка", - отметил Смирнов в интервью РИА "Новости". - Близкий сосед Петербурга - Финляндия не переходит на летнее время, поскольку это нецелесообразно для северных широт. Хельсинки всего на несколько минут разнится с Петербургом по часовому времени. Однако теперь на российско-финской границе вдруг образуется ступенька в два часа".

                        ну что ж, "зато" у вас "вечера" будут светлые (хотя на самом деле это будет еще день, хехе!)
                        Ответить
                        • Наши(exUSSR) умеют выделятся, когда принято отменять летнее время, у нас отменяют стандартное, все должно быть по-своему, пусть хуёво но по-своему. Тот же Глонасс со Сколково... Короче всё для отвлечения внимания от Роспила.
                          Ответить
                • А еще не в каждом году 365 дней... Вот такой у нас Марсиан! ёбнутый календарь.
                  Ответить
                  • Но 31-то декабря в каждом году ведь последним днём является, нет?
                    Ответить
    • Но ведь j были месяцы, почему в другом цикле они стали днями?
      Мой мооооооозг.
      А ещё кто-то мне тут писал, что говнокод - это то, что хотя бы работает. И что, этот код работает? С учётом 30-го месяца и кривых ифов?
      Ответить
      • да там в конце когда начинают выводится даты формата ммддгг то месяца становятся $i а дни $j это не влияет на работу кода, у себя я это подправил )
        и код работает после исправления ифов ))
        Ответить
    • при попытке понять глубинную логику данного кода у меня включилась встроенная защита мозга...
      не хочу знать, почему
      for ($j=13;$j<=31;$j++) {     // начинаем с 13 чтобы не повторяться в датах
      Ответить
    • показать все, что скрытоначинаем с 13 чтобы не повторяться в датах
      Мне нужен был список дат с 1970 года по 2012 год,
      причем как в формате ддммгг, так и ммддгг.
      если месяц и день меньше 13 то обе даты будут одинаковыми,
      так вот чтоб не повторяться я и начинал во втором случае с 13 числа.
      Ответить
      • мы уже поняли, это оптимизация такая =)
        Ответить
        • ага, прямо сплошной оптимизированный код, особенно там, где 9000+ проверок "if ($i==...)"
          Ответить
    • показать все, что скрытода дело не в оптимизации, там всего то в условии я вместо двойного рано поставил одиночное, после этого исправления все заработало.
      Ответить
      • Вы бы лучше головой подумали...
        Ответить
      • Вдох-выдох, закрываем браузер и не возвращаемся. Тут люди недобрые, до попоболи легко доведут.
        Ответить
    • Автору видимо приснилось что наверное for удалили... Блин, ну почему всё сами себе усложняют
      Ответить
    • согласен что код никуда не годится но целью было один раз получить список дат для сохранения их в файл и все. ради одного единственного выполнения скрипта можно не думать об оптимизации, тут главное побыстрее рабочий код написать. о несинтаксических ошибках и других вариантах кода я сейчас только думаю для общего своего развития так скажем.
      Ответить
    • показать все, что скрытоиз php выражений ))
      Ответить
      • Батенька, Вам надо к психиатру! Там отучат от неадекватных смайлов, а если повезет, то и от компьютера.
        Ответить
    • отучаться от компьютера в XXI веке это равносильно отказаться от огня в каменном веке, или от электричества в XIX веке (или в каком там веке его открыли, не суть).
      Ответить
      • "отучаться" - это не значит "отказаться"
        Ответить
        • А что в твоем понимании отучаться от компьютера? Не работать на нем а забивать им гвозди?
          Ответить

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