Cклонение слов после чисел

Данная функция склоняет слова после числа.


function num_decline( $number, $titles, $show_number = true ){

if( is_string( $titles ) ){
$titles = preg_split( '/, */', $titles );
}

// когда указано 2 элемента
if( empty( $titles[2] ) ){
$titles[2] = $titles[1];
}

$cases = [ 2, 0, 1, 1, 1, 2 ];

$intnum = abs( (int) strip_tags( $number ) );

$title_index = ( $intnum % 100 > 4 && $intnum % 100 < 20 )
? 2
: $cases[ min( $intnum % 10, 5 ) ];

return ( $show_number ? "$number " : '' ) . $titles[ $title_index ];
}


// Примеры вызова:

num_decline( $num, 'книга,книги,книг' );
num_decline( $num, 'book,books');
num_decline( $num, [ 'книга','книги','книг' ]);
num_decline( $num, [ 'book','books' ]);


* @param int|string $number Число после которого будет слово. Можно указать число в HTML тегах.
* @param string|array $titles Варианты склонения или первое слово для кратного 1.
* @param bool $show_number Указываем тут 00, когда не нужно выводить само число.
*
* @return string Например: 1 книга, 2 книги, 10 книг.


  26.01.24 / 10:45 | PHP |   97 | 0   0