数组重复信息

时间:2014-04-04 21:20:27

标签: php mysql arrays foreach while-loop

如果这个问题得到解决,我很抱歉 - 我一整天都在搜索,但没有找到符合我需求的东西。

我在php中有一个foreach循环,重复信息和恶心,我不知道如何解决它。我尝试过分组,array_unique等,但还没有找到解决方案。当考虑所有变量时,没有行是另一行的真实副本。

我有一张桌子,每条线代表一张中奖彩票。每行都有唯一的ID,日期,等级(1,2,3)以及其他一些值得信息的变量。我想按日期组织这个,按层号递增,其中日期列出一次,每个票据列出一次。现在,每行都列为票证,但重复多次。这是我的代码 - 我删除了之间的显示,因为这些工作正常:

$selectResults = "SELECT * FROM mytable WHERE YEAR(date) = 2014 ORDER BY date DESC, tier ASC";
$getResults = @mysqli_query($connect, $selectResults) or die('query error: ' . mysqli_error($connect));
if(mysqli_num_rows($getResults) == 0){
    echo "There are no tickets to display.";
}else{
echo "<table><tr><th>Date</th><th>Tier</th><th>Points</th><th>Prize Amount</th></tr>";
while($row = mysqli_fetch_array($getResults)){
extract($row);
foreach($row as $ticket => $date){
    echo "<tr><td>" . date('n/j/Y', strtotime($date)) . "</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
    if (1 == $tier)
        {
        (Display Tier 1 tickets for date)
        }
    if (2 == $tier)
        {
        (Display Tier 2 tickets for date)
        }
    if (3 == $tier)
        {
        (Display Tier 3 tickets for date)
        }
            }
    echo "<tr class='bottomRow'><td colspan='4' /></tr>";

}
echo "</table>";

1 个答案:

答案 0 :(得分:0)

摆脱foreach循环:

foreach ($row as $ticket => $date)

您已经使用while循环遍历行。 $row只包含一行,每列都是数组的元素。

您的代码应如下所示:

$last_date = null;
while ($row = mysqli_fetch_assoc($getResults)) {
    extract($row);
    if ($date != $last_date {
        echo "<tr><td>" . date('n/j/Y', strtotime($date)) . "</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
        $last_date = $date;
    }
    // Display ticket details
}