Получить значение массива из массива, переданного как параметр в PHP

89
12

У меня есть следующий массив:

$months = array(
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December');

У меня есть функция, чтобы вернуть имя месяца на основе $month_id Я перехожу к функции. Но функция всегда возвращает January. Функция, которая у меня есть, следующая:

public function getMonthNameFromID($month_id)
{
$months = array(
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December');

foreach ($months as $m => $m_value) {
if ($m == $month_id) {
return $m;
} else {
return "0";
}
}
}

Мне нужна эта функция, чтобы отображать январь, когда я передаю 1 в качестве входных данных, февраль, когда 2 передается как вход и т.д. Но в настоящее время функция выводит только January качестве вывода.

Я отредактировал функцию, и я получаю имя месяца на основе индекса, который я передаю функции. Но есть ли способ сделать функцию более полезной, проверяя, является ли индекс допустимым значением или какие-либо предложения относительно лучшего решения.

public function getMonthNameFromID($month_id)
{
$months = array(
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December');
if (!empty($month_id)) {
for ($i = 1; $i <= 12; $i++) {
if ($month_id == $i) {
return $months[$i];
}
}
}
}

спросил(а) 2021-01-25T23:02:40+03:00 4 месяца, 2 недели назад
1
Решение
62

тест с этим

public function getMonthNameFromID($month_id)
{
$months = array(
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December');

if(isset($months[$month_id])){
return $months[$month_id];
}else{
return 0;
}
}

ответил(а) 2021-01-25T23:02:40+03:00 4 месяца, 2 недели назад
45

почему бы вам не переписать функцию следующим образом

public function getMonthNameFromID($month_id)
{
$months = array(
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December');

return $months[$month_id];
}

ответил(а) 2021-01-25T23:02:40+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема