循环只在函数内部迭代一次

Loop only iterating once inside function

我有以下函数,它应该 return 所有 锦标赛和相应的轮次 在一个数组中。

当我使用 print_r 调用主体内部的函数时,我得到 只有一个 锦标赛和一轮 returned,但是 有多个锦标赛和轮次好像只循环了一次循环就退出了

function getTournaments(){
    global $db;
        $sql = "SELECT tournament, weekNum 
                FROM schedule
                GROUP BY tournament";
        $stmnt = $db->prepare($sql);
        $stmnt->execute();
        $tournaments = $stmnt->fetchAll();

        $data = array();
        foreach($tournaments as $tournament){
                $data = array('tournament' => $tournament['tournament'], 'round' => $tournament['weekNum']);

        }//foreach
        return $data;
}//function

print_r(getTournaments());

数据库转储

这里可以在db

上看到对应的mysql语句运行

我的输出/问题

正如您在下图中看到的那样 我在做 print_r、why 时只参加了一场锦标赛和一轮 returned我是否没有在函数数组中获取所有锦标赛和轮次 return?我在这里遗漏了什么吗?

你在要创建新数组(多维)的循环中改写 $data

$data[] = array('tournament' => $tournament['tournament'], 'round' => $tournament['weekNum']);

您应该将 $data 用作数组 :) 使用这个

 $data[] = array('tournament' => $tournament['tournament'], 'round' => $tournament['weekNum']);

而不是

$data = array('tournament' => $tournament['tournament'], 'round' => $tournament['weekNum']);