在PHP中向后遍历一个foreach循环
我在这里有一个foreach循环,它将数据库中的图像显示在网页上。我想要做的是迭代遍历foreach循环,所以最新的内容首先显示在网页上。这是我的代码:在PHP中向后遍历一个foreach循环
$sql = "SELECT COUNT(*) FROM 'UPLOADPICS'";
if ($sth = $dbhandle->query($sql)){
if ($sth->fetchColumn() > 0){
$sql = "SELECT link FROM 'UPLOADPICS'";
foreach ($dbhandle->query($sql) as $row){
$content = $row['link'];
?>
<img src="<?php echo $content ?>" />
<br/>
<br/>
<?php
}
}
else {
print "No rows matched the query";
}
这可能吗?非常感谢!
,如果你没有在表中的日期字段..你可以通过ID以降序
$sql = "SELECT link FROM `UPLOADPICS` ORDER BY `id` DESC";
命令,如果你不喜欢,你可以使用array_reverse()函数
这工作得很好!我正在使用SQLite,因此'rowid'已经存在。 对于那些想知道的,这里是我的语法来显示相反的顺序: '$ sql =“SELECT link FROM'UPLOADPICS'ORDER BY rowid DESC”;' – DommyCastles
您可以使用ORDER BY
命令您的结果首先显示最近的项目,而不是向后循环。这通常是最常用的方法。
SELECT foo, bar
FROM uploadpics
ORDER BY
date DESC
当然,这不仅仅是一个建议;如果不先把它们加载到一个新的数组集合中,然后迭代它,那么你将无法反向运行这些值 - 所以你会浪费一些宝贵的时间和资源。
您可以对数组进行计数并使用简单的索引变量向后迭代,每次迭代减1。
$arr = $dbhandle->query($sql);
$i = count($arr) - 1;
while ($i >= 0)
{
$content = $arr[$i]['link'];
?>
<img src="<?php echo $content ?>" />
<?php
$i--;
}
这似乎是要走的路! 在// do $ arr [$ i];中有一个问题,是我在哪里显示图像? – DommyCastles
是的,确切地说,检查我的编辑 – KiaiFighter
$array=array("uno"=>array(1),"pepito"=>array(1),"clase"=>array(1),"a123"=>array(1));
echo 'normal<br>';
foreach($array as $k=>$v){
echo $k." = ".$v."<br>";
}
echo 'back<br>';
foreach(array_reverse($array) as $k=>$v){
echo $k." = ".$v."<br>";
}
一些解释去代码不会错,我认为。 – khagler
<?php
$a = array('a', 'b', 'c');
for ($i = count($a) - 1; $i >= 0; --$i) {
echo $a[$i];
}
echo "\n";
?>
添加'ORDER BY'循环的顺序通缉。在查询之前,您不需要计算... –
为什么不在SQL中对结果进行排序? – candyleung