#php #arrays #function
#php #массивы #функция
Вопрос:
У меня есть функция, которая выглядит следующим образом:
function findSchedule($team)
{
switch($team)
{
case "Baltimore Orioles":
$team_home[42] = "Tampa Bay Rays";
$team_home[43] = "Boston Red Sox";
$team_home[44] = "Boston Red Sox";
$team_home[45] = "$team";
$team_home[46] = "$team";
$team_home[47] = "$team";
$team_home[48] = "$team";
$team_away[42] = "$team";
$team_away[43] = "$team";
$team_away[44] = "$team";
$team_away[45] = "New York Yankees";
$team_away[46] = "New York Yankees";
$team_away[47] = "Washington Nationals";
$team_away[48] = "Washington Nationals";
$team_date[42] = "Sun, May 15";
$team_date[43] = "Mon, May 16";
$team_date[44] = "Tue, May 17";
$team_date[45] = "Wed, May 18";
$team_date[46] = "Thu, May 19";
$team_date[47] = "Fri, May 20";
$team_date[48] = "Sat, May 21";
break;
case "Boston Red Sox":
$team_home[42] = "$team";
$team_home[43] = "$team";
$team_home[44] = "$team";
$team_home[45] = "$team";
$team_home[46] = "$team";
$team_home[47] = "$team";
$team_home[48] = "$team";
$team_away[42] = "Baltimore Orioles";
$team_away[43] = "Baltimore Orioles";
$team_away[44] = "Detroit Tigers";
$team_away[45] = "Detroit Tigers";
$team_away[46] = "Chicago Cubs";
$team_away[47] = "Chicago Cubs";
$team_away[48] = "Chicago Cubs";
$team_date[42] = "Mon, May 16";
$team_date[43] = "Tue, May 17";
$team_date[44] = "Wed, May 18";
$team_date[45] = "Thu, May 19";
$team_date[46] = "Fri, May 20";
$team_date[47] = "Sat, May 21";
$team_date[48] = "Sun, May 22";
break;
}
for($i = 42;$i < 49; $i)
{
return $team_home[$i];
return $team_away[$i];
return $team_date[$i];
}
Когда я пытаюсь использовать переменные $ team_date, $ team_away и $ team_home следующим образом, кажется, работает только переменная $ team_home.
$game = filter_input(INPUT_GET, 'game', FILTER_SANITIZE_STRING);
$team_home[$game] = findSchedule($team);
$team_away[$game] = findSchedule($team);
$team_date[$game] = findSchedule($team);
Есть идеи?
Спасибо,
Копье
Комментарии:
1. Не имеет прямого отношения к вашему вопросу, но если вы используете это
switch
утверждение для обработки более чем двух команд, то это действительно похоже на работу, где база данных пригодилась бы…2. Да, на самом деле это 30 команд. Но я действительно не хочу слишком сильно нагружать базу данных. Но, как вы думаете, было бы эффективнее полагаться на БД, чем на php в этом случае?
3. 30 команд не будут создавать нагрузку на вашу базу данных. Попробуйте 30 миллионов или около того 🙂
4. Потрясающе. Я просто мог бы переключиться на использование mysql немного больше. кстати, это вообще плохая практика — использовать более 3 запросов на страницу? это значительно сократит время загрузки?
Ответ №1:
Это связано с тем, как вы построили свой последний for
цикл. Вы установили для нее return
каждое значение; return
оператор завершает обработку. Вы хотите сохранить echo
каждую из них, а затем вернуть, или, альтернативно, никогда явно не указывать return
, а просто завершить функцию.
Чтобы вернуть все аргументы, вы могли бы просто создать один массив большего размера и вернуть это:
return array( $team_home, $team_away, $team_date);
Комментарии:
1. Ну, как я могу сохранить значения того, что находится в массивах, не возвращая их?
Ответ №2:
На стороне возврата вы пишете массив:
return array($team_home, $team_away, $team_date);
И на принимающей стороне вы можете использовать list()
:
list($team_home, $team_away, $team_date) = findSchedule($team);