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

    +169

    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
    function razbstrok($text)
    {
    $nomer1=0;
    $stroki = array();
    	$nomer1 = strpos($text, ".", $nomer1+1);
    	while($nomer1!=false)
    	{
    		$stroki[count($stroki)]=substr($text, 0, $nomer1);
    		$text = substr($text, $nomer1+1, strlen($text)-1-$nomer1);
    		$nomer1 = strpos($text, ".", $nomer1+1);
    	}
    	$i=1;
    	$i=0;
    	while($i<count($stroki))
    	{
    	if($stroki[$i]=="")
    		{
    		$stroki[$i]=NULL; //убрать пустые клетки
    		}
    	$i=$i+1;
    	}
    	return $stroki;
    }
    
    ...
    
    $i=0;
    while($i<count(razbstrok($_GET["razdeliteli"])))
    {
    //echo(razbstrok($_GET["razdeliteli"])[$i]);
    $stroki = razbstrok($_GET["razdeliteli"]);
    echo($stroki[$i]);
    $i=$i+1;
    echo('<br>');
    }

    explode? Нет, не слышал.

    Запостил: basename, 21 Января 2011

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

    • //убрать пустые клетки
      в зоопарке день открытых дверей (макаки сбежали)
      Ответить
    • >razbstrok
      >$nomer1
      >$stroki
      $i=1;
      $i=0;

      >["razdeliteli"]
      http://habreffect.ru/files/6f4/c74cb2e34/12944255787899.jpg
      Ответить
    • >razbstrok
      Я как первые мгновения смотрел - мне показалось написано зарaботок$.
      Ответить
    • Расскажите ему про for что ли

      while($i<count($stroki)){
      ...
      i++;
      }

      $i=0;
      while($i<count(razbstrok($_GET["razdeliteli"]))){
      ...
      $i=$i+1;
      }
      Ответить
      • Думаю стоит ещё сказать про то, что не стоит count() вызывать каждую итерацию цикла)
        Ответить
        • а вдруг он собирается в цикле удалять элементы :)
          Ответить
          • for($i = 0, $h = count($array); $i < $h; $i++)
            {
               if(/*some cond*/)
               {
                    unset($array[$i + 1], $array[$i + 2]);
                    $h -= 2;
               }
            }
            Ответить
            • что то меня, как жависта, такая конструкция пугает :)
              Ответить
              • ну да у жавистов заботится о пямяти как то не принято.
                Ответить
                • 1. причём тут память?
                  2. а в похапе принято?
                  Ответить
                  • 1. unset освобождает память сразу а не потом.
                    2. Да принято.
                    Ответить
                    • а для "забытых" переменных ГЦ?
                      Ответить
                      • для забитых переменных. да ГЦ
                        Ответить
                        • сохранить хотите девственность и оргазмы получить :)
                          Ответить
                    • if($stroki[$i]=="")
                      {
                      $stroki[$i]=NULL; //убрать пустые клетки
                      }
                      $i=$i+1;
                      }

                      Вif($stroki[$i]=="")
                      {
                      $stroki[$i]=NULL; //убрать пустые клетки
                      }
                      $i=$i+1;
                      }
                      А этот гениальный код, когда реально освободит память?
                      Ответить
              • а чем именно, если не секрет?
                Ответить
                • ну у нас есть итератор :)
                  Ответить
                  • ну, в php тоже есть.. только я давно не видел, чтобы ими кто-то пользовался.
                    Ответить
                    • а почему? Удобно же.
                      Iterator i = collection.iterator();
                      while (i.hasNext()) {
                      if (/*condition*/) {
                      i.remove();
                      }
                      }
                      Ответить
                      • $array = new ArrayObject();
                        
                        $array[] = 'a';
                        $array[] = 'b';
                        $array[] = 'c';
                        
                        $i = $array->getIterator();
                        
                        while($i->valid())
                        {
                          if(/*condition */)
                          {  
                             $i->offsetUnset($i->key());
                          }
                          else
                          {
                             $i->next();
                          }
                        }
                        Ответить
                        • воот) а захрена вместо этого выдумывать некий неочевидный фор
                          Ответить
                          • потому, что для php-шников (большинства) как раз for будет более, чем очевиден.

                            например, зачем этот код, если есть обычный перловский foreach, который и выполняет роботу for'а, да и делает остальные дела как то переход к следующей итерации.
                            Ответить
                          • блин, секунд 10 не мог вкурить, при чем здесь boot...
                            Ответить
            • простого $h -= 2 маловато будет, потому что индексы массива остаются те же, которые были. Вы просто не дойдёте до конца. Нужно было делать $i+=2
              Ответить
        • А как Вам вызов count(razbstrok($_GET["razdeliteli"])) ?
          Ответить
    • зародышь обфускаторщика
      Ответить

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