Чтобы избавиться от "говнокода", надо избавиться от "говноалгоритма".
Программист всегда решает задачу в общем виде. Как это сделать - отлично показал
usheninmike.
Вся суть его алгоритма - в строке:
$repeating = count($digits) - count(array_unique($digits));
Я просто "допилил" его решение под вашу задачу:
function win() {
if (func_num_args() <=0 ) $digits = array(); // Нет аргументов
elseif (func_num_args() >1 ) { // > 1 аргумента
for ($i=0, $digits=array(); $i < func_num_args(); $i++)
$digits[] = func_get_arg($i);
}
else $digits = str_split( func_get_arg(0) );
// ... тут надо проверить, что $digits не более 3-х элементов
$repeating = count($digits) - count(array_unique($digits));
return $repeating ? $repeating + 1 : 0;
}
Такая функция
win() будет понимать:
echo win().'<br>';
echo win("").'<br>';
echo win(1,4,1).'<br>';
echo win(141).'<br>';
echo win("141").'<br>';
echo win("11").'<br>';
echo win(11,11,1).'<br>';
DisclaimerФункция отлично работает с ЦИФРАМИ. Но если понадобится считать СИМВОЛЫ в строке, результат по начале может показаться не очевидным - проверьте: win("§§§").'<br>';
Почему - разберётесь сами :)