我这里有一个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";
}
这可能吗?提前非常感谢!
与其
向后循环,不如使用ORDER BY
对结果进行排序,以首先显示最新的项目。这通常是最常用的方法。
SELECT foo, bar
FROM uploadpics
ORDER BY
date DESC
当然,这不仅仅是一个建议;如果不先将它们加载到新的数组集合中,然后向后迭代,您将无法反向运行这些值 - 因此您将浪费一些宝贵的时间和资源。
如果您的表中没有日期字段..您可以按ID降序排序
$sql = "SELECT link FROM `UPLOADPICS` ORDER BY `id` DESC";
如果你不喜欢这样,你可以使用 array_reverse(( 函数
<?php
$a = array('a', 'b', 'c');
for ($i = count($a) - 1; $i >= 0; --$i) {
echo $a[$i];
}
echo "'n";
?>
包括Order By
会更合适,但你可能没有日期字段!
使用 PHP 的 array_reverse(( 函数将反转数组;在您的情况下,首先反转数组,然后应用 foreach。
希望这有帮助
您可以对数组进行计数,并使用简单的索引变量向后迭代它,该变量在每次迭代中减少 1。
$arr = $dbhandle->query($sql);
$i = count($arr) - 1;
while ($i >= 0)
{
$content = $arr[$i]['link'];
?>
<img src="<?php echo $content ?>" />
<?php
$i--;
}
$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>";
}