<?php
function getCardName($number) {
// Возвращает базовую форму для карты
switch ($number) {
case 6: return 'шестерок';
case 7: return 'семерок';
case 8: return 'восьмерок';
case 9: return 'девяток';
case 10: return 'десяток';
case 11: return 'валет';
case 12: return 'дама';
case 13: return 'король';
case 14: return 'туз';
default: return 'неизвестная карта';
}
}
function getCardQuantity($count, $baseName) {
// Склонение в зависимости от количества
if ($count % 10 == 1 && $count % 100 != 11) {
// Единственное число
switch ($baseName) {
case 'валет': return "$count валет";
case 'дама': return "$count дама";
case 'король': return "$count король";
case 'туз': return "$count туз";
default: return "$count {$baseName}а"; // Например, 1 шестерка
}
} elseif (in_array($count % 10, [2, 3, 4]) && !in_array($count % 100, [12, 13, 14])) {
// Для чисел 2, 3, 4
switch ($baseName) {
case 'валет': return "$count валета";
case 'дама': return "$count дамы";
case 'король': return "$count короля";
case 'туз': return "$count туза";
default: return "$count {$baseName}и"; // Например, 3 шестерки
}
} else {
// Для всех остальных случаев (множественное число)
switch ($baseName) {
case 'валет': return "$count валетов";
case 'дама': return "$count дам";
case 'король': return "$count королей";
case 'туз': return "$count тузов";
default: return "$count $baseName"; // Например, 5 шестерок
}
}
}
// Пример использования
$cards = [
['number' => 14, 'count' => 2], // 2 туза
['number' => 13, 'count' => 2], // 2 короля
['number' => 13, 'count' => 12], // 12 королей
['number' => 14, 'count' => 3], // 3 туза
['number' => 6, 'count' => 5], // 5 шестерок
];
foreach ($cards as $card) {
$cardNameBase = getCardName($card['number']);
$result = getCardQuantity($card['count'], $cardNameBase);
echo $result . "\n";
}
?>
В даном примере будет вот такой результат: 2 туза 2 короля 12 королей 3 туза 5 шестерок