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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Преобразование слова, взависимости от числа

Сообщения:  [1-10]   [11-15] 

 
 автор: Akira   (24.01.2005 в 23:51)   письмо автору
 
   для: JIEXA   (24.01.2005 в 23:16)
 

Всегда рады помочь...

   
 
 автор: JIEXA   (24.01.2005 в 23:16)   письмо автору
 
   для: JIEXA   (24.01.2005 в 22:24)
 

Вообщем послоностью получилась такая функия:
<?php
function preobrazovatel($num$one$ed$mn)
{
        
$last substr($numstrlen($num)-1);
        if((
$num>="10") and ($num<="20") )
        {
          print
"$num $mn";
        }
        else if(
          (
$last=="0") or
          (
$last == "5") or
          (
$last == "6") or
          (
$last == "7") or
          (
$last == "8") or
          (
$last == "9"))
        {
           print
"$num $mn";
        }
        else if(
$last=="1")
        {
                print
"$num $one";
        }
        else if(
          (
$last == "2") or
          (
$last == "3") or
          (
$last == "4"))
        {
                print
"$num $ed";
        }
}
?>

Проверить её можно так:
<?php
while($t "10000")
{
        print 
preobrazovatel($tСтатьяСтатьиСтатей);
        print
"<br>";
        
$t++;

}
?>

Спасибо всем участникам форума!

   
 
 автор: Akira   (24.01.2005 в 23:10)   письмо автору
 
   для: glsv (Дизайнер)   (24.01.2005 в 23:07)
 

а по-моему использование в такой мелочи класса только усложняет и запутывает =Р И все равно мой код меньше =Р

   
 
 автор: JIEXA   (24.01.2005 в 23:10)   письмо автору
 
   для: glsv (Дизайнер)   (24.01.2005 в 23:07)
 

Дизайнер, спасибо, вы не поможите вот по этому вопросу(http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1714&page=1) очень надо!

   
 
 автор: glsv (Дизайнер)   (24.01.2005 в 23:07)   письмо автору
 
   для: Akira   (24.01.2005 в 22:53)
 

>Да? А если чило 12 ?
Там есть проверка на 12.

>И почему-то мой код по меньше Вашего класса
Какого такого класса? :) Здесь нет ни моего класса, ни моей функции.

   
 
 автор: JIEXA   (24.01.2005 в 23:07)   письмо автору
 
   для: Akira   (24.01.2005 в 22:53)
 

Да есть смысл
только так:
<?php
function preobrazovatel($num$one$ed$mn)
{
...

?>

И потом вызываешь
<?php
preobrazovatel
($numСтатьяСтатьиСтатей);
preobrazovatel($numФаилФайлаФайлов);
preobrazovatel($numразразараз);
?>

Вот и гибкости прибавилось )))

   
 
 автор: cheops   (24.01.2005 в 23:05)   письмо автору
 
   для: JIEXA   (24.01.2005 в 22:41)
 

Можно сделать примерно следующим образом:
<?php
function preobrazovatel($num$one$ed$mn

  
# $one="статья"; 
  # $ed="статьи"; 
  # $mn="статей"; 
  
if($num===""){ 
  print
""
  } 
  if((
$num=="0") or 
  ((
$num >= "5") and ($num <= "20")) or preg_match("|[056789]$|",$num)) 
  { 
    print
"$num $mn"
    return;
  } 
  if(
preg_match("|[1]$|",$num)) 
  { 
    print
"$num $one"
    return;
  } 
  if(
preg_match("|[234]$|",$num)) 
  { 
    print
"$num $ed"
    return;
  } 

?>

   
 
 автор: Akira   (24.01.2005 в 22:53)   письмо автору
 
   для: glsv (Дизайнер)   (24.01.2005 в 22:48)
 

>Нужно проверять последний символ в числе.
Да? А если чило 12 ? Еще надо проверять что бы первое число не равно 1 =)
Что я благополучно и сделал....
И почему-то мой код по меньше Вашего класса =Р
Я его обычно использую для своих нужд. Типа счетчиков и т.д.
OFFTOP.
А есть ли смысл на такой код создовать function ?

   
 
 автор: Akira   (24.01.2005 в 22:51)   письмо автору
 
   для: JIEXA   (24.01.2005 в 22:41)
 


<? 
########################Вывод слова человек(а)#########################
$str "3476473";
$last =  substr($str,(strlen($str)-1),strlen($str));
$first substr($str,0,1);
if (
$first != 1)
{
if (
$last == OR $last == OR $last == 4)
  {
  
$people=" Человека"// Присвоим Человека ,можно поменять на что угодно! Склоняем на 2,3,4
  
}
  
}
if (empty(
$people)) $people=" Человек"// Присвоим Человек ,можно поменять на что угодно! Склоняем на 0,1,5,6,7,8,9
#######################################################
?>

И при любых значениях будет выводитья 5 человек ,но 2 человека.
переделать легко.
2 статьи но 5 статей.
Работает хоть с 19847576768855...5
Апплодисментов не надо =Р
PS $str-число Лучше к нему прировнять Ваше, $people -содержит слово.

   
 
 автор: JIEXA   (24.01.2005 в 22:49)   письмо автору
 
   для: SS   (24.01.2005 в 22:45)
 

Подожди те как несколько минут сейчас попробую кое-что

   

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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