Ich möchte die Reihenfolge der Listenelemente dieses Codes umkehren. Im Grunde ist es eine Reihe von Jahren, die von den ältesten bis zu den jüngsten reichen, und ich versuche, diese Ausgabe umzukehren.
<?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++;
}
?>
Oder Sie können die Funktion array_reverse verwenden.
quelle
array_reverse()
ändert das Quellarray nicht, gibt jedoch ein neues Array zurück. (Siehearray_reverse()
.) Sie müssen also entweder zuerst das neue Array speichern oder einfach die Funktion in der Deklaration Ihrer for-Schleife verwenden.<?php $input = array('a', 'b', 'c'); foreach (array_reverse($input) as $value) { echo $value."\n"; } ?>
Die Ausgabe wird sein:
Um an OP zu adressieren, lautet der Code:
<?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++; }
Zuletzt werde ich vermuten, dass dies
$j
entweder ein Zähler war, der bei einem ersten Versuch verwendet wurde, einen umgekehrten Weg zu finden$skills_nav
, oder eine Möglichkeit, das$skills_nav
Array zu zählen . Wenn erstere, sollte es jetzt entfernt werden, da Sie die richtige Lösung haben. In letzterem Fall kann es außerhalb der Schleife durch a ersetzt werden$j = count($skills_nav)
.quelle
Wenn es Ihnen nichts ausmacht, das Array (oder eine temporäre Kopie davon) zu zerstören, können Sie Folgendes tun:
$stack = array("orange", "banana", "apple", "raspberry"); while ($fruit = array_pop($stack)){ echo $fruit . "\n<br>"; }
produziert:
Ich denke, diese Lösung liest sich sauberer als das Fummeln mit einem Index, und es ist weniger wahrscheinlich, dass Sie Fehler bei der Indexbehandlung einführen. Das Problem dabei ist jedoch, dass die Ausführung Ihres Codes wahrscheinlich etwas länger dauert, wenn Sie zuerst eine temporäre Kopie des Arrays erstellen müssen . Das Fummeln mit einem Index läuft wahrscheinlich schneller und kann auch nützlich sein, wenn Sie tatsächlich auf den Index verweisen müssen, wie in:
$stack = array("orange", "banana", "apple", "raspberry"); $index = count($stack) - 1; while($index > -1){ echo $stack[$index] ." is in position ". $index . "\n<br>"; $index--; }
Aber wie Sie sehen, müssen Sie mit dem Index sehr vorsichtig sein ...
quelle
array_pop
Ansatz ist dreimal langsamer als derarray_reverse
Ansatz: 3v4l.org/3jaTTAngenommen, Sie müssen nur ein indiziertes Array (nicht assoziativ oder mehrdimensional) umkehren, würde eine einfache for-Schleife ausreichen:
$fruits = ['bananas', 'apples', 'pears']; for($i = count($fruits)-1; $i >= 0; $i--) { echo $fruits[$i] . '<br>'; }
quelle
Mit der Usort- Funktion können Sie eigene Sortierregeln erstellen
quelle
Wenn Ihr Array über eine SQL-Abfrage gefüllt ist, sollten Sie das Ergebnis in MySQL umkehren, dh:
SELECT * FROM model_input order by creation_date desc
quelle
<?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++; } ?>
quelle