在 PHP 中向后循环访问 foreach 循环


Iterate through a foreach loop backwards in 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";
        }

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

与其

向后循环,不如使用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>";
}