кусок скрипта, который отвечает за смену окончаний в соответствии с числом найденных человек.
if ($num_rows == 1)
{ $is =" работник";}
elseif ($num_rows == 2){$is =" работника";}
elseif ($num_rows == 3){$is =" работника";}
elseif ($num_rows == 4){$is =" работника";}
...
else {$is =" работников";}
echo "Найдено "$num_rows." ".$is;
А если их тысяча?!
Подскажите решение, кто сталкивался. Спасибо.
Спустя 40 секунд (14.09.2011 - 15:09) vital написал(а):
/**
* For the formation of endings of words.
*
* @param int $value number.
* @param string $word0 word in the singular.
* @param string $word1 word in the plural (2, 3).
* @param string $word2 word in the plural.
* @param string $separator separator, default ' '.
* @return string formed words
* @access private.
*/
private function morph($value, $word0, $word1, $word2, $separator = ' ')
{
if (preg_match('/1\d$/', $value))
{
return $value . $separator . $word2;
} elseif (preg_match('/1$/', $value))
{
return $value . $separator . $word0;
} elseif (preg_match('/(2|3|4)$/', $value))
{
return $value . $separator . $word1;
} else
{
return $value . $separator . $word2;
}
}
Спустя 4 минуты, 5 секунд (14.09.2011 - 15:13) art1804 написал(а):
Спасибо, Попробую применить.
Не, не понимаю как применить ((
Не, не понимаю как применить ((
Спустя 31 секунда (14.09.2011 - 15:14) caballero написал(а):
Цитата |
А если их тысяча?! |
кого тысяча? работников или окончаний?
откуси две последние цифры и разбей на диапазоны
0 ов
1 ик
2-4 ка
5-19 ков
Спустя 7 минут, 26 секунд (14.09.2011 - 15:21) art1804 написал(а):
работников
Чем лучше откусить окончания от подстановки слова целиком?
Чем лучше откусить окончания от подстановки слова целиком?
Спустя 3 минуты, 46 секунд (14.09.2011 - 15:25) m4a1fox написал(а):
От и до.
Если 1 - то работник
иначе если от 2 до 3 - работников
иначе если 4 то работника
иначе если от 5 до 20 то работников
Если 1 - то работник
иначе если от 2 до 3 - работников
иначе если 4 то работника
иначе если от 5 до 20 то работников
Спустя 4 минуты, 55 секунд (14.09.2011 - 15:30) caballero написал(а):
Цитата |
Чем лучше откусить окончания от подстановки слова целиком? |
от чего откусить и кого куда подставлять?
если очешь ответ формулируй вопрос так чтобы было понятно о чем речь.
Спустя 1 минута, 7 секунд (14.09.2011 - 15:31) vital написал(а):
Цитата (art1804 @ 14.09.2011 - 12:13) |
Спасибо, Попробую применить. Не, не понимаю как применить (( |
Цитата |
/** * For the formation of endings of words. * * @param int $value number. * @param string $word0 word in the singular. * @param string $word1 word in the plural (2, 3). * @param string $word2 word in the plural. * @param string $separator separator, default ' '. * @return string formed words * @access private. */ |
/**
* For the formation of endings of words.
*
* @param int $value число
* @param string $word0 единственное число.
* @param string $word1 множественное (2, 3).
* @param string $word2 word множественное 4,5...
* @param string $separator чем разделить число и слова, default ' '.
* @return string formed words
* @access private.
*/
выдрано из класса
Спустя 38 секунд (14.09.2011 - 15:31) art1804 написал(а):
Цитата (caballero @ 14.09.2011 - 12:14) | ||
кого тысяча? работников или окончаний? откуси две последние цифры и разбей на диапазоны 0 ов 1 ик 2-4 ка 5-19 ков |
0 ов
1 ик
2-4 ка
5-19 ков
как вот это теперь оформить?
Если человек сделает выборку и в ней будет 422 работниКА - Не вводить все же это вручную!
Типа:
if($num==1){$is="работник"};
...
if($num==421){$is="работник"};
...
if($num==463){$is="работникА"};
Какое-то универсальное решение должно же быть?!
Спустя 55 секунд (14.09.2011 - 15:32) caballero написал(а):
Цитата |
Если 1 - то работник иначе если от 2 до 3 - работников иначе если 4 то работника иначе если от 5 до 20 то работников |
3 работников?
зачем давать кривые советы
Спустя 2 минуты, 39 секунд (14.09.2011 - 15:35) caballero написал(а):
Цитата |
Какое-то универсальное решение должно же быть?! |
А тебе каким языком написали
откусывешь от 463
получается 63
раз это больше 19 берешь последнюю цифру
3 работника
Спустя 50 секунд (14.09.2011 - 15:36) phz написал(а):
Спустя 1 минута, 2 секунды (14.09.2011 - 15:37) art1804 написал(а):
if($num==421){$is="работник"};
Попробую по-другому спросить.
Как написать код так, чтобы $num не плодить, а как-то диапазонами...
типа
if($num ==1, 21,31,41,51... ){$is="работник"};
Попробую по-другому спросить.
Как написать код так, чтобы $num не плодить, а как-то диапазонами...
типа
if($num ==1, 21,31,41,51... ){$is="работник"};
Спустя 28 секунд (14.09.2011 - 15:37) twin написал(а):
function endingsForm($n, $form1, $form2, $form5)
{
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20)
return $form5;
if ($n1 > 1 && $n1 < 5)
return $form2;
if ($n1 == 1)
return $form1;
return $form5;
}
echo endingsForm(3, 'работник', 'работника', 'работников');
Спустя 4 минуты, 36 секунд (14.09.2011 - 15:42) art1804 написал(а):
Спасибо всем за скрипты, ссылки и советы. Буду разбираться.
Спасибо,Twin. Все работает как надо! Только не понимаю как, но работает...
Спасибо,Twin. Все работает как надо! Только не понимаю как, но работает...