Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
mykola:
хуясе здесь математики собрались о_О
Обязательно этот беcпредел с флурами, цейлами и тонной умножений? Первый код нихуя не понятен, но в втором каменте ваще какая то высшая математика..
Не надо верить всему, что пишут в комментах на ru.php.net, а головой надо думать и читать больше, если не знаешь. То что инкремент строки может привести к непредсказуемым результатам давно пофиксили.
Вот типа нормальный вариант:
function increaseCommentLevel($level)
{
if(strlen($level) % 3 != 0)
throw new Exception('ERROR: Comment level is corrupted');
$scale = array(
'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h',
'i','j','k','l','m','n','o','p','q','r', 's','t','u','v','w','x','y','z'
);
$increment = 1; // size of the increment
$scSize = count($scale);
$res = '';
$nGrade = 0;
for($i = strlen($level) - 1, $fst = 1; $i >= 0; $i--)
{
$dg = array_search($level[$i], $scale);
if($fst) { $dg += $increment; $fst = 0; }
$dg += $nGrade;
$nGrade = floor($dg / $scSize);
$dg = ($dg - $scSize * $nGrade);
$res = $scale[$dg] . $res;
}
return $res;
}
lvl = ['0'..'9'] ++ ['a'..'z']
lvls = sequence $ replicate 3 lvl
getNext e = maybe "000" ((lvls !!).(+1)) $ elemIndex e lvls
Точнее
getNext e = maybe "000" ((lvls !!).(`mod` (length lvls)).(+1)) $ elemIndex e lvls
хуясе здесь математики собрались о_О
Обязательно этот беcпредел с флурами, цейлами и тонной умножений? Первый код нихуя не понятен, но в втором каменте ваще какая то высшая математика..
ща я тоже загоню, падаждите 😀
Долбаебы
Рыдаю. Радует что я не один такой 🙂
lvls = sequence $ replicate 3 lvl
что это???
Капитан Очевидность, а у тебя бестолковка работает, молодец!
Как в басне: ".. а ларчик просто открывался".
В итоге решение такое:
$str = '001';
$str = sprintf('%03s', ++$str);
echo $str;
Индуский бог кодинга седня отдыхает :)))
Похоже какой-то кусок подписывается моим ником
$str = sprintf('%03s', ++$str);
echo $str; //aaaa
$str = sprintf('%03s', ++$str);
echo $str; //aaaa
Ну и что? Возьми с полки пряник.
http://ru.php.net/operators.increment
Note that incrementing strings can give unpredictable results due to type changes. For example:
<?php
$i = '9C6';
for($n=0; $n<10; $n++)
echo ++$i . "\n";
?>
Gives you:
9C7
9C8
9C9
9D0
10
11
12
..etc.
Или ему тоже не верить?