2

我这里有一个 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";
        }

这可能吗?提前非常感谢!

4

6 回答 6

6

而不是向后循环,您可以对结果进行排序以ORDER BY首先显示最近的项目。这通常是最常用的方法。

SELECT foo, bar 
FROM uploadpics 
ORDER BY 
  date DESC

当然,这不仅仅是一个建议;无论如何,如果不先将它们加载到新的数组集合中,然后向后迭代,您将无法反向运行这些值 - 所以您会浪费一些宝贵的时间和资源。

于 2012-05-16T01:55:18.137 回答
2

如果您的表中没有日期字段..您可以按 id 以降序排序

    $sql = "SELECT link FROM `UPLOADPICS` ORDER BY `id` DESC";

如果你不喜欢,你可以使用 array_reverse() 函数

于 2012-05-16T08:21:52.323 回答
2
<?php
    $a = array('a', 'b', 'c');
    for ($i = count($a) - 1; $i >= 0; --$i) {
        echo $a[$i];
    }
    echo "\n";
 ?>
于 2013-05-23T10:36:42.950 回答
0

您可以对数组进行计数并使用一个简单的索引变量向后迭代它,该变量在每次迭代中减 1。

$arr = $dbhandle->query($sql);
$i = count($arr) - 1;

while ($i >= 0)
{
    $content = $arr[$i]['link'];
    ?>
    <img src="<?php echo $content ?>" />
    <?php
    $i--;
}
于 2012-05-16T01:55:30.710 回答
0

好吧,包括Order By会更合适,但您可能没有日期字段!

使用 php 的array_reverse() 函数将反转数组;在您的情况下,首先反转数组,然后应用 foreach。

希望这可以帮助

于 2012-05-16T05:04:00.467 回答
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>";
}
于 2013-02-05T21:50:31.233 回答