在PHP中向后迭代一个foreach循环

时间:2012-05-16 01:51:47

标签: php

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

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

6 个答案:

答案 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)

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

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

希望这有帮助

答案 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>";
}