ginesufa
@ginesufa

Как сократить условия php?

Здравствуйте, можно ли сократить это множество условий? Если можно примерчик, я пока только изучаю php
if($_GET['year'] == '2016') {
	$jndns['year'] = '2016';
}
if($_GET['year'] == '2017') {
	$jndns['year'] = '2017';
}
if($_GET['year'] == '2018') {
	$jndns['year'] = '2018';
}
if($_GET['year'] == '2019') {
	$jndns['year'] = '2019';
}
if($_GET['year'] == '2020') {
	$jndns['year'] = '2020';
}
if($_GET['year'] == '2021') {
	$jndns['year'] = '2021';
}
if($_GET['year'] == '2022') {
	$jndns['year'] = '2022';
}
if($_GET['year'] == '2023') {
	$jndns['year'] = '2023';
}
if($_GET['year'] == '2024') {
	$jndns['year'] = '2024';
}
if($_GET['year'] == '2025') {
	$jndns['year'] = '2025';
}
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
GennadyS
@GennadyS
Программист, философ
В цикле:
foreach (range(2016, 2025) as $year)
  if (intval($_GET['year']) == $year)
    $jdns['year'] = (string) $year;

Или без цикла:
if (in_array(intval($_GET['year']), range(2016, 2025)))
  $jdns['year'] = (string) intval($_GET['year']);

PS FanatPHP верно отмечает, если даты лежат последовательно в заданном диапазоне, проще сравнить условием больше-меньше:
if (intval($_GET['year']) >= 2016 && intval($_GET['year']) <= 2025)
  $jdns['year'] = (string) intval($_GET['year']);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@dzhebrak
if(in_array($_GET['year'], ['2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025'])) {
	$jndns['year'] = $_GET['year'];
}

https://www.php.net/manual/ru/function.in-array.php
Ответ написан
Adamos
@Adamos
Без задачи вопрос не имеет смысла. Например, вот это тоже ответ:
$jndns['year'] = min(2024, max(2016, $_GET['year']));
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
if(isset($_GET['year']) && is_numeric($_GET['year']) && (strlen($_GET['year']) === 4))) {
  $jndns['year'] = $_GET['year'];
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы