首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >foreach列表项的反向顺序

foreach列表项的反向顺序
EN

Stack Overflow用户
提问于 2012-05-28 06:01:01
回答 9查看 146.5K关注 0票数 94

我想颠倒此代码列表项的顺序。基本上,这是一组从最老到最近的年份,我正在尝试逆转这一输出。

<?php
    $j=1;     
    foreach ( $skills_nav as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
    }
?>  
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-05-28 06:04:06

向后走

如果你正在寻找一个纯粹的PHP解决方案,你也可以简单地在列表中倒数,从前到后访问它:

$accounts = Array(
  '@jonathansampson',
  '@f12devtools',
  '@ieanswers'
);

$index = count($accounts);

while($index) {
  echo sprintf("<li>%s</li>", $accounts[--$index]);
}

上面的代码将$index设置为元素的总数,然后开始从后到前访问它们,从而减少下一次迭代的索引值。

反转数组

您还可以利用array_reverse function来反转数组的值,从而允许您以相反的顺序访问它们:

$accounts = Array(
  '@jonathansampson',
  '@f12devtools',
  '@ieanswers'
);

foreach ( array_reverse($accounts) as $account ) {
  echo sprintf("<li>%s</li>", $account);
}
票数 199
EN

Stack Overflow用户

发布于 2012-05-28 06:05:48

或者您可以使用array_reverse函数。

票数 34
EN

Stack Overflow用户

发布于 2015-11-01 02:25:06

array_reverse()不会改变源数组,但会返回一个新数组。(请参阅array_reverse()。)因此,您要么需要首先存储新数组,要么只需在for循环的声明中使用function。

<?php 
    $input = array('a', 'b', 'c');
    foreach (array_reverse($input) as $value) {
        echo $value."\n";
    }
?>

输出将为:

c
b
a

因此,要寻址到OP,代码变成:

<?php
    $j=1;     
    foreach ( array_reverse($skills_nav) as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
}

最后,我将猜测$j要么是最初尝试获取$skills_nav反向遍历时使用的计数器,要么是计算$skills_nav数组的一种方法。如果是前者,现在应该删除它,因为您有了正确的解决方案。如果是后者,则可以在循环外部将其替换为$j = count($skills_nav)

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10777597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档