Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: определение (лет,года) :)
 
 автор: unnamed   (18.01.2007 в 13:14)   письмо автору
 
 

Здраствуйте.
Есть вывод возраста человека, допустим "20 лет", а вот если человеку 23, то надо вывести "23 года" как это определяется? какая система? спасибо.

   
 
 автор: cheops   (18.01.2007 в 13:18)   письмо автору
 
   для: unnamed   (18.01.2007 в 13:14)
 

Возможно вас заинтересует тема по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4540.

   
 
 автор: Sergey89   (18.01.2007 в 13:19)   письмо автору
 
   для: unnamed   (18.01.2007 в 13:14)
 

По последней цифре вроде как. 0 - лет, 1 - год, 2-4 - года 5-9 - лет. Ео есть исключения типа 11, 12, 13 и ещё какие-то вроде.

   
 
 автор: ULIS   (18.01.2007 в 13:24)   письмо автору
 
   для: unnamed   (18.01.2007 в 13:14)
 

$age = array();

$age[20] = "лет";
$age[21] = "год";
$age[22] = "года";

$currAge = 22;

print($currAge." ".$age[$currAge]);

   
 
 автор: unnamed   (18.01.2007 в 15:17)   письмо автору
 
   для: ULIS   (18.01.2007 в 13:24)
 

Вот что вышло:

<?
$day
="кол-во лет";
$last_digit = $day[(strlen($day) - 1)];
$pred_last_digit = $day[(strlen($day) - 2)];
if((
$last_digit == 0 || $last_digit == 1|| $last_digit == 2 || $last_digit == 3 || $last_digit == 4|| $last_digit == 5|| $last_digit == 6|| $last_digit == 7|| $last_digit == 8|| $last_digit == 9) && ($pred_last_digit == 1 || $pred_last_digit == 2 || $pred_last_digit == 3  || $pred_last_digit == 4 || $pred_last_digit == 5|| $pred_last_digit == 6 || $pred_last_digit == 7 || $pred_last_digit == 8)) 
{
$word="лет";}

if(
$last_digit == 1 && $pred_last_digit != 1) {$word="год";}

if((
$last_digit == 2 || $last_digit == 3 || $last_digit == 4) && $pred_last_digit != 1) {$word="года";}

echo 
$day.$word;
?>

Можно укоротить? :) Или и так сойдет. сделал все что смог
Спасибо всем и спасибо cheops'у за ссылочку именно по тому примеру делал.

   
 
 автор: Саня   (18.01.2007 в 17:04)   письмо автору
 
   для: unnamed   (18.01.2007 в 15:17)
 

Для себя я уже давно написал такую функцию:
<?php
function textnum ( $form1, $form2, $form3, $num ) {
  if ( !
is_numeric($num) ) return $form1;
  if ( 
$num < 0 ) $num = -$num;
  
$num = (string)$num;
  
$len = strlen($num);
  
$last_num = (integer)($len == 1 ? $num : $num[$len - 1]);
  if ( 
$len >= 2 ) {
    if ( 
$num[$len-2] == "1" ) return $form3;
  }
  if ( 
$last_num == 1 ) {
    return 
$form1;
  } elseif ( 
$last_num >=2 && $last_num < 5 ) {
    return 
$form2;
  } else {
    return 
$form3;
  }
}
$number = rand(0, 10000);
print 
"На сайте находятся ".$number." ".
      
textnum("пользователь", "пользователя", "пользователей", $number).".<br/>";

$number = rand(0, 100);
print 
"Вам ".$number." ".textnum("год", "года", "лет", $number).".<br/>";

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования