我这里有一个foreach循环,它将数据库中的图像显示在网页上。我想要做的是向后遍历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";
}
这可能吗?非常感谢提前!
答案 0 :(得分:6)
您可以使用ORDER BY
订购结果,而不是向后循环,以便首先显示最新的项目。这通常是最常用的方法。
SELECT foo, bar
FROM uploadpics
ORDER BY
date DESC
当然,这不仅仅是一个建议;如果不首先将它们加载到新的数组集合中,然后向后迭代,那么你将无法反向运行这些值 - 所以你会浪费一些宝贵的时间和资源。
答案 1 :(得分:1)
如果您的表中没有日期字段..您可以按降序排序
$sql = "SELECT link FROM `UPLOADPICS` ORDER BY `id` DESC";
如果您不喜欢,可以使用array_reverse()函数
答案 2 :(得分:1)
<?php
$a = array('a', 'b', 'c');
for ($i = count($a) - 1; $i >= 0; --$i) {
echo $a[$i];
}
echo "\n";
?>
答案 3 :(得分:0)
你可以对数组进行计数,并使用一个简单的索引变量向后迭代它,每次迭代都会减少1。
$arr = $dbhandle->query($sql);
$i = count($arr) - 1;
while ($i >= 0)
{
$content = $arr[$i]['link'];
?>
<img src="<?php echo $content ?>" />
<?php
$i--;
}
答案 4 :(得分:0)
答案 5 :(得分:0)
$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>";
}