在前面的问题shown here之后,我想知道如何将下面的代码更改为“foreach”语句?非常感谢你的帮助,S。
<div id="banner-wrap">
<div id="banner" class="gallery">
<ul class="galleryBar">
<?php
$homeB=mysql_query("select * from istable where fpGallery = '1' ORDER BY RAND() LIMIT 0, 5");
while($homeG=mysql_fetch_array($homeB)) {
$linkcode = $homeG['title'];
$linkcode = str_replace(" ","",$linkcode);
echo '
<li>
<a href="'.$wwwUrl.'images/'.$homeG['image'].'" rel="'.$linkcode.'">
<img src="'.$wwwUrl.'images/tn/'.$homeG['image'].'" width="75" height="55" alt="'.$homeG['title'].'" />
</a>
</li>
';
}
echo '</ul>';
echo '</div>';
while($homeGal=mysql_fetch_array($homeB)) {
echo '
<div id="'.$linkcode.'" class="overlay">
<h3>'.$homeGal['title'].'</h3>
<h4>'.$homeGal['location'].'</h4>
</div>
';
}
?>
</div>发布于 2010-10-29 20:50:44
你可以这样做:
$data = array();
while($homeG=mysql_fetch_array($homeB)) {
$data[] = $homeG;
}
foreach($data as $row) {
// your code hre
}但我给你的建议是拆分你的编程逻辑和视图逻辑/代码。你最好试着创建一些东西作为模型视图控制器[http://en.wikipedia.org/wiki/Model-视图-控制器]
或者使用PHP框架(CakePHP、Zend Framework、CodeIgniter)
发布于 2010-10-29 20:50:17
在这种情况下,您不能将while替换为foreach。mysql_fetch_array / mysql_fetch_assoc只返回一行,而不是传递的资源的整个结果集(如果连接资源的内部指针在末尾,则返回false )。
在您的例子中,如果您需要整个结果集,然后在foreach中使用它,那么您总是可以在array (使用while)中获取整个结果集,然后使用带有foreach的array (参见infinity answer中的示例)。如果你有一个很大的结果集,这将占用更多的内存/减慢进程。
https://stackoverflow.com/questions/4051982
复制相似问题