Вывод слов в разной форме(1 день, 2 дня, 5 дней)

Рецепт №20. Из книги «128 рецептов php»
Перейти к оглавлению

Не редко возникает необходимость вывода числа с текстовой подписью. Например, вывод количества дней — 1 день, 2 дня, 5 дней. Как можно заметить, форма слова меняется в зависимости от числа. Чтобы не писать условия для каждого случая, можно составить универсальное условие.

Пример:

// функция
function numForm($number, $forma1, $forma2, $forma3){   
    if(($number == "0") 
or (($number >= "5") 
and ($number <= "20")) 
or preg_match("|[056789]$|",$number)
    ){
        return "$number $forma3";
    }   
     
    if(preg_match("|[1]$|",$number)){
        return "$number $forma1";
    }
         
    if(preg_match("|[234]$|",$number)){
        return "$number $forma2";
    }
}

// пример использования
$array = array(1, 2, 5);
foreach($array as $num){
	echo numForm($num, "день", "дня", "дней") . "<br/>";
}

В примере была использована не описанная ранее функция preg_match. Она позволяет осуществлять проверку значения на соответствию регулярному выражению.

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*