匹配二维数组

时间:2015-08-26 18:12:10

标签: php multidimensional-array foreach

伙计们,我正在尝试匹配二维数组。这是演示我正在做的事情的代码:

$games = array("Game1" => "Team 2 vs. Team 3", "Game2" => "Team 1 vs. Win 1","Game3" => "Loser Game 1 vs. Loser Game 2","Game4" => "Win Game 2 vs. Win Game 3", "Game5" => "Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss)");

$time= array("06:00 " => "06:30","06:30 " => " 07:00","07:00" => "07:30","07:30" =>"08:00","08:00" => "08:30");

foreach($games as $games => $versus)
{
   foreach($time as $start_time => $end_time)
   {
      echo $games . ": ". $versus ." ". $start_time. " to " . $end_time . "<br>";
   }
}

然而,这输出

Game1: Team 2 vs. Team 3 = 06:00 to 06:30
Game1: Team 2 vs. Team 3 = 06:30 to 07:00
Game1: Team 2 vs. Team 3 = 07:00 to 07:30
Game1: Team 2 vs. Team 3 = 07:30 to 08:00
Game1: Team 2 vs. Team 3 = 08:00 to 08:30
Game2: Team 1 vs. Win 1 = 06:00 to 06:30
Game2: Team 1 vs. Win 1 = 06:30 to 07:00
Game2: Team 1 vs. Win 1 = 07:00 to 07:30
Game2: Team 1 vs. Win 1 = 07:30 to 08:00
Game2: Team 1 vs. Win 1 = 08:00 to 08:30
Game3: Loser Game 1 vs. Loser Game 2 = 06:00 to 06:30
Game3: Loser Game 1 vs. Loser Game 2 = 06:30 to 07:00
Game3: Loser Game 1 vs. Loser Game 2 = 07:00 to 07:30
Game3: Loser Game 1 vs. Loser Game 2 = 07:30 to 08:00
Game3: Loser Game 1 vs. Loser Game 2 = 08:00 to 08:30
Game4: Win Game 2 vs. Win Game 3 = 06:00 to 06:30
Game4: Win Game 2 vs. Win Game 3 = 06:30 to 07:00
Game4: Win Game 2 vs. Win Game 3 = 07:00 to 07:30
Game4: Win Game 2 vs. Win Game 3 = 07:30 to 08:00
Game4: Win Game 2 vs. Win Game 3 = 08:00 to 08:30
Game5: Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss) = 06:00 to 06:30
Game5: Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss) = 06:30 to 07:00
Game5: Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss) = 07:00 to 07:30
Game5: Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss) = 07:30 to 08:00
Game5: Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss) = 08:00 to 08:30

我希望将其显示为

Game1: Team 2 vs. Team 3 06:00 to 06:30
Game2: Team 1 vs. Win 1 06:30 to 07:00
Game3: Loser Game 1 vs. Loser Game 2 07:00 to 07:30
Game4: Win Game 2 vs. Win Game 3 = 07:30 to 08:00
Game5: Win Game 4 vs. Loser Game 4 (If Loser 4 is First Loss) = 08:00 to 08:30

我怎么解决这个问题? 在此先感谢谁帮助了我..

2 个答案:

答案 0 :(得分:3)

如果您可以控制数组,我会使用不同的结构,您可以轻松匹配游戏和时间。

但是,由于您没有数字键,因此您需要从key()数组中获取键current()和值$time,并在每次循环迭代时前进数组指针:

foreach($games as $game => $versus)
{
    echo $game . ": " . $versus ." ". key($time) ." to ". current($time) ."<br>";
    next($time);
}

实际上使用each()可能更简单:

foreach($games as $game => $versus)
{
    list($start, $end) = each($time);
    echo $game . ": " . $versus ." ". $start ." to ". $end ."<br>";
}

答案 1 :(得分:1)

如果可能,您可以尝试将游戏和开始/结束时间组合成一个多维数组(这只是众多可能的方法之一)。此示例适用于2个游戏,但您可以添加更多游戏:

$games = array(
    "Game1" => 
            Array(
                "versus" => "Team 2 vs. Team 3",
                "start_time" => "06:00",
                "end_time" => "06:30"
            ),
     "Game2" => 
            Array(
                "versus" => "Team 1 vs. Win 1",
                "start_time" => "06:30",
                "end_time" => "07:00"
            )
);

foreach ($games as $game => $arr)
{
    echo "<br>";
    echo $game . ": versus : " . $arr['versus'] . ": start_time: ";
    echo $arr['start_time'] . ": end_time: " . $arr['end_time'];
}

输出:

  

Game1:vs.:Team 2 vs. Team 3:start_time:06:00:end_time:06:30

     

Game2:vs.:Team 1 vs. Win 1:start_time:06:30:end_time:07:00