如果这个问题得到解决,我很抱歉 - 我一整天都在搜索,但没有找到符合我需求的东西。
我在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> </td><td> </td><td> </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>";
答案 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> </td><td> </td><td> </td></tr>";
$last_date = $date;
}
// Display ticket details
}