我想颠倒此代码列表项的顺序。基本上它是从最旧到最近的一组年,我试图扭转那个输出。
<?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++;
}
?>
答案 0 :(得分:141)
如果您正在寻找纯粹的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);
}
答案 1 :(得分:27)
或者您可以使用array_reverse功能。
答案 2 :(得分:12)
array_reverse()
不会更改源数组,但会返回一个新数组。 (参见array_reverse()
。)因此,您需要先存储新数组,或者只在for循环声明中使用函数。
<?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
反向行走的计数器,还是计算{{1}的方法数组。如果是前者,那么现在应该删除它,因为你有正确的解决方案。如果是后者,可以在循环外部用$skills_nav
替换它。
答案 3 :(得分:4)
如果您不介意销毁阵列(或其临时副本),您可以这样做:
$stack = array("orange", "banana", "apple", "raspberry");
while ($fruit = array_pop($stack)){
echo $fruit . "\n<br>";
}
产生
raspberry
apple
banana
orange
我认为这个解决方案比阅读索引更简洁,你不太可能引入索引处理错误,但问题是如果你必须创建一个临时副本,你的代码可能需要稍长的时间来运行数组首先。 摆弄索引可能会运行得更快,如果您确实需要引用索引,它也可以派上用场,如:
$stack = array("orange", "banana", "apple", "raspberry");
$index = count($stack) - 1;
while($index > -1){
echo $stack[$index] ." is in position ". $index . "\n<br>";
$index--;
}
但正如你所看到的,你必须非常小心索引......
答案 4 :(得分:3)
您可以使用usort功能创建自己的排序规则
答案 5 :(得分:3)
假设你只需要反转一个索引数组(不是关联数组或多维数组),一个简单的for loop就足够了:
readdir
答案 6 :(得分:1)
如果您的数组是通过SQL查询填充的,请考虑在MySQL中反转结果,即:
SELECT * FROM model_input order by creation_date desc
答案 7 :(得分:-1)
<?php
$j=1;
array_reverse($skills_nav);
foreach ( $skills_nav as $skill ) {
$a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
$a .= $skill->name;
$a .= '</a></li>';
echo $a;
echo "\n";
$j++;
}
?>