如何将“while”循环更改为“foreach”循环

时间:2014-05-25 19:39:38

标签: php

我想在PHP中提出一个关于“foreach循环”的问题。在下面的代码底部,“while”循环单独访问数组中的元素。如何使用“foreach”循环重写while循环的BODY?

  <?php
  require_once('MDB2.php');
  $db = MDB2::connect("mysql://mk:mk@shark.company.com/mk");
  if(PEAR::iserror($db)) die($db->getMessage());
  $sql = "SELECT courses.ID,courses.Name,staff.Name
  FROM courses,staff
  WHERE courses.Coordinator=staff.id
  and courses.ID = \"$course\"";
  $q = $db->query($sql);
  if(PEAR::iserror($q)) die($q->getMessage());
  while($row = $q->fetchRow()){
  echo "<tr><td>$row[0]</td>\n";
  echo "<td>$row[1]</td>\n";
  echo "<td>$row[2]</td></tr>\n";
  }
  }
  ?>
 </table>
 </body></html>

2 个答案:

答案 0 :(得分:0)

也许:

echo "<tr>";
foreach( $row as $field => $value )
{
    echo "<td> \"$value\" </td>";
}
echo "</tr>";

答案 1 :(得分:0)

正如Poitr Olaszewski所评论的那样。您需要获取整个集合才能使用foreach()进行迭代。

这意味着代替整个while($row....,您需要执行以下操作:

$data = $q->fetchAll();
foreach($data as $key => $val) {
    // do what you need to here....
}



More reading -> Documentation for fetchAll() for MDB2.php