-1
$arrayday=array();
$arrayTime=array();
$arrayTime1=array();
while($row7 = mysql_fetch_array($result7))
{
$arrayday[] = $row7['day'];
 $arrayTime[] =$row7['TimeIn'];
 $arrayTime1[] =$row7['TimeOut'];
}

for($a=0;$a<32;$a++)
{
    echo "<td>$a</td>";

    if($a==$arrayday[$a])
    {
        echo "<td>".$arrayTime[$a]."</td>";
        echo "<td>".$arrayTime[$a]."</td>";
        echo "<tr>";

    }
    else
    {
        echo "<td>No record</td>";
        echo "<td>No record</td>";
        echo "<tr>";    
    }
}

好的..我得到了第 20,27 和 28 天的时间和超时 .. 从这段代码中,它将循环 3 次 1 到 30,对于第 1 次 1 到 30,它将在第 20 天输入时间和超时,不记录第 27 天和第 28 天。对于第二个 1 到 30,它将放置 20 和 27,第三个循环 1-30,它将为 20,27 和 28 放置时间和超时..我只需要第三个循环..它有3 记录在 1 到 30。

这个问题已经被@llya解决了

4

1 回答 1

1

试试这个:修复了 for in while 循环问题,添加了忘记的 /tr 标签。

// collect list of days
$arrayday=array();
$arrayTime=array();
$arrayTime1=array();
while($row7 = mysql_fetch_array($result7)) {
  $arrayday[] = $row7['day'];
  $arrayTime[$row7['day']] =$row7['TimeIn'];
  $arrayTime1[$row7['day']] =$row7['TimeOut'];
}

// build table
for ($x = 1; $x <= 31; $x++) {
  echo "<td>$x</td>";
  if (in_array($x, $arrayday)) {
    echo "<td>".$arrayTime[$x]."</td>";
    echo "<td>".$arrayTime1[$x]."</td>";
    echo "</tr><tr>";    
  } else {
    echo "<td>No record</td>";
    echo "<td>No record</td>";
    echo "</tr><tr>";    
  }
}
于 2013-09-05T03:22:44.767 回答