PHP在foreach

时间:2018-02-06 12:06:36

标签: php mysql arrays multidimensional-array

对于经验更丰富的程序员来说,这应该是一个失败的简单问题。

我正在开发一个基本的" pickem app"它允许用户预测谁让用户投票他们认为谁将赢得体育比赛。很简单。

我编写了以下函数来显示每个匹配的统计信息。 I.E该函数返回每个团队收到的票数。

对它完美运行的函数执行print_r()并返回正确的结果。结果以包含多维数组的形式返回。 gameIDteamnumber_of_votes

我的代码

$sql='SELECT gameID, team, COUNT(*) AS number_of_picks
          FROM picks
          WHERE picks.tournament = :tournament AND picks.weekNum = :weekNum 
          GROUP BY gameID, team
          ORDER BY gameID, team';
    $stmnt = $db->prepare($sql);
    $stmnt->bindValue(':tournament', $tournament);
    $stmnt->bindValue(':weekNum', $week);
    $stmnt->execute();
    if ($stmnt->rowCount() > 0) {
        $result = array();
        foreach ($stmnt->fetchAll() as $row) {
            $result[$row['gameID']][] = $row;
        }
        return $result;
        }
    return false;
}

Print_R函数返回数据

![enter image description here

我的问题

我的问题是在我的foreach循环中显示/回显数据。 I have searched on SO and most answers points towards a simple foreach()

$picks = $calcStats('Tournament', Round);
foreach($picks as $pick){
echo $pick['gameID']; //gameID
echo $pick['team']; //Which Team Will Win
echo $pick['number_of_votes'] //How many votes did each team get
}

我的问题是我在尝试回显上面的变量时继续获取NULL值。我对循环进行了一些调整,结果相同。

我在这里缺少什么?任何帮助/建议表示赞赏...

1 个答案:

答案 0 :(得分:1)

如果你的print_r()数组是$ picks,那么你的数组是一个多维数组,你还需要一个嵌套的foreach(),如下所示:

<?php
    $picks = $calcStats('Tournament', Round);
    foreach($picks as $keyArr){
        foreach($keyArr as $pick)
            echo $pick['gameID']; //gameID
            echo $pick['team']; //Which Team Will Win
            echo $pick['number_of_picks'] //it should be this according to your print_r data
        }
    }