我想颠倒此代码列表项的顺序.基本上它是从最旧到最近的一组年,我试图扭转这一输出.
<?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++;
}
?>
Run Code Online (Sandbox Code Playgroud)
Sam*_*son 149
如果您正在寻找一个纯粹的PHP解决方案,您也可以简单地在列表中向后计数,从前到后访问它:
$accounts = Array(
'@jonathansampson',
'@f12devtools',
'@ieanswers'
);
$index = count($accounts);
while($index) {
echo sprintf("<li>%s</li>", $accounts[--$index]);
}
Run Code Online (Sandbox Code Playgroud)
以上设置$index为元素总数,然后开始从前到后访问它们,减少下一次迭代的索引值.
您还可以利用该array_reverse函数反转数组的值,允许您以相反的顺序访问它们:
$accounts = Array(
'@jonathansampson',
'@f12devtools',
'@ieanswers'
);
foreach ( array_reverse($accounts) as $account ) {
echo sprintf("<li>%s</li>", $account);
}
Run Code Online (Sandbox Code Playgroud)
Jas*_*ler 13
array_reverse()不会更改源数组,但会返回一个新数组.(请参阅array_reverse().)因此,您需要先存储新数组,或者只需在for循环声明中使用函数.
<?php
$input = array('a', 'b', 'c');
foreach (array_reverse($input) as $value) {
echo $value."\n";
}
?>
Run Code Online (Sandbox Code Playgroud)
输出将是:
c
b
a
Run Code Online (Sandbox Code Playgroud)
因此,为了解决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++;
}
Run Code Online (Sandbox Code Playgroud)
最后,我要猜测这$j是一个用于初步尝试获得反向行走的计数器$skills_nav,或者是计算$skills_nav数组的方法.如果是前者,那么现在应该删除它,因为你有正确的解决方案.如果是后者,它可以在循环外部用a替换$j = count($skills_nav).
如果您不介意销毁数组(或它的临时副本),您可以执行以下操作:
$stack = array("orange", "banana", "apple", "raspberry");
while ($fruit = array_pop($stack)){
echo $fruit . "\n<br>";
}
Run Code Online (Sandbox Code Playgroud)
产生:
raspberry
apple
banana
orange
Run Code Online (Sandbox Code Playgroud)
我认为这个解决方案读起来比摆弄索引更清晰,你不太可能引入索引处理错误,但它的问题是如果你必须先创建数组的临时副本,你的代码运行时间可能会稍长一些. 摆弄索引可能会运行得更快,如果您确实需要引用索引,它也可能派上用场,如下所示:
$stack = array("orange", "banana", "apple", "raspberry");
$index = count($stack) - 1;
while($index > -1){
echo $stack[$index] ." is in position ". $index . "\n<br>";
$index--;
}
Run Code Online (Sandbox Code Playgroud)
但是正如你所看到的,你必须非常小心索引......
假设您只需要反转索引数组(不是关联或多维),一个简单的for 循环就足够了:
$fruits = ['bananas', 'apples', 'pears'];
for($i = count($fruits)-1; $i >= 0; $i--) {
echo $fruits[$i] . '<br>';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112761 次 |
| 最近记录: |