Как добавить все условия в одну переменную в php?
Я вывожу из базы MYSQL жанры, а чтобы их перевести на русский - я делаю вот такую конструкцию:
$results = $mysqli->query("SELECT * FROM genres_posts WHERE game_id = '$id' limit 10");
while($row = $results->fetch_assoc()) {
if ($row["url_genre_name"] == 'ekshen') {echo '<li>Экшен</li>';}
if ($row["url_genre_name"] == 'simulyator') {echo '<li>Симулятор</li>';}
if ($row["url_genre_name"] == 'strategiya') {echo '<li>Стратегия</li>';}
if ($row["url_genre_name"] == 'sport') {echo '<li>Спорт</li>';}
if ($row["url_genre_name"] == 'priklyuchenie') {echo '<li>Приключение</li>';}
if ($row["url_genre_name"] == 'rolevaya-igra') {echo '<li>Ролевая игра</li>';}
if ($row["url_genre_name"] == 'golovolomka') {echo '<li>Головоломка</li>';}
if ($row["url_genre_name"] == 'indi') {echo '<li>Инди</li>';}
}
Можно ли как то сделать так, чтобы загнать все это в одну переменную, и чтобы я вставлял, скажем вот так и выводился жанр с переводом? Как это можно реализовать? У меня по коду много мест, куда нужно вставлять такую конструкцию и код превращается в гору этого текста.
$results = $mysqli->query("SELECT * FROM genres_posts WHERE game_id = '$id' limit 10");
while($row = $results->fetch_assoc()) {
echo $genre;
}
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Надо сделать мапу и обращаться по ключу к ней:
$map = ['sport' => 'Спорт', 'indi' => 'Инди', и т.д.];
echo "<li>{$map[$row['url_genre_name']]}</li>";
Автор решения: pgood
→ Ссылка
В PHP 8 для этого можно использовать новое выражение match
echo '<li>',
match($row['url_genre_name']){
'ekshen' => 'Экшен',
'simulyator' => 'Симулятор',
'strategiya' => 'Стратегия',
'sport' => 'Спорт',
'priklyuchenie' => 'Приключение',
'rolevaya-igra' => 'Ролевая игра',
'golovolomka' => 'Головоломка',
'indi' => 'Инди'
},
'</li>';