// Функция для поиска жанра по названию
function findGenreByName(array $genres, string $name): ?Genre {
foreach ($genres as $genre) {
if (stripos($genre->genre, $name) !== false) {
return $genre;
}
}
return null;
}
// Функция для поиска страны по названию
function findCountryByName(array $countries, string $name): ?Country {
foreach ($countries as $country) {
if (stripos($country->country, $name) !== false) {
return $country;
}
}
return null;
}
// Функция для получения жанров по категориям
function categorizeGenres(array $genres): array {
$categories = [
'action' => [],
'drama' => [],
'comedy' => [],
'horror' => [],
'sci_fi' => [],
'other' => []
];
foreach ($genres as $genre) {
$genreName = strtolower($genre->genre);
if (strpos($genreName, 'боевик') !== false || strpos($genreName, 'экшен') !== false) {
$categories['action'][] = $genre;
} elseif (strpos($genreName, 'драма') !== false) {
$categories['drama'][] = $genre;
} elseif (strpos($genreName, 'комедия') !== false) {
$categories['comedy'][] = $genre;
} elseif (strpos($genreName, 'ужас') !== false || strpos($genreName, 'хоррор') !== false) {
$categories['horror'][] = $genre;
} elseif (strpos($genreName, 'фантастика') !== false || strpos($genreName, 'научная') !== false) {
$categories['sci_fi'][] = $genre;
} else {
$categories['other'][] = $genre;
}
}
return $categories;
}
// Функция для получения стран по регионам
function categorizeCountries(array $countries): array {
$regions = [
'europe' => [],
'asia' => [],
'america' => [],
'africa' => [],
'other' => []
];
$europeanCountries = ['россия', 'великобритания', 'франция', 'германия', 'италия', 'испания'];
$asianCountries = ['китай', 'япония', 'корея', 'индия', 'тайвань'];
$americanCountries = ['сша', 'канада', 'мексика', 'бразилия', 'аргентина'];
$africanCountries = ['египет', 'юар', 'нигерия', 'кения'];
foreach ($countries as $country) {
$countryName = strtolower($country->country);
if (in_array($countryName, $europeanCountries)) {
$regions['europe'][] = $country;
} elseif (in_array($countryName, $asianCountries)) {
$regions['asia'][] = $country;
} elseif (in_array($countryName, $americanCountries)) {
$regions['america'][] = $country;
} elseif (in_array($countryName, $africanCountries)) {
$regions['africa'][] = $country;
} else {
$regions['other'][] = $country;
}
}
return $regions;
}
// Использование
$filters = $filmService->getFilters();
// Поиск конкретных жанров и стран
$actionGenre = findGenreByName($filters->genres, 'боевик');
$usCountry = findCountryByName($filters->countries, 'сша');
if ($actionGenre) {
echo "Найден жанр: {$actionGenre->genre}\n";
}
if ($usCountry) {
echo "Найдена страна: {$usCountry->country}\n";
}
// Категоризация жанров
$genreCategories = categorizeGenres($filters->genres);
echo "Боевиков: " . count($genreCategories['action']) . "\n";
echo "Драм: " . count($genreCategories['drama']) . "\n";
echo "Комедий: " . count($genreCategories['comedy']) . "\n";
echo "Ужасов: " . count($genreCategories['horror']) . "\n";
echo "Фантастики: " . count($genreCategories['sci_fi']) . "\n";
echo "Прочих: " . count($genreCategories['other']) . "\n";
// Категоризация стран
$countryRegions = categorizeCountries($filters->countries);
echo "Европейских стран: " . count($countryRegions['europe']) . "\n";
echo "Азиатских стран: " . count($countryRegions['asia']) . "\n";
echo "Американских стран: " . count($countryRegions['america']) . "\n";
echo "Африканских стран: " . count($countryRegions['africa']) . "\n";
echo "Прочих стран: " . count($countryRegions['other']) . "\n";