J'essaie d'afficher un tableau de fichiers dans l'ordre de la date (dernière modification). J'ai fait ce looping acheter à travers le tableau et le trier dans un autre tableau, mais y at-il un moyen plus facile (plus efficace) de faire cela?glob() - trier par date
Répondre
Pour la postérité, dans le cas où le poste de forum lié à la réponse acceptée est perdue ou peu claire à certains, le code correspondant nécessaire est:
<?php
$myarray = glob("*.*");
usort($myarray, create_function('$a,$b', 'return filemtime($a) - filemtime($b);'));
?>
testé ce sur mon système et vérifié qu'il ne sorte par fichier mtime comme désiré. J'ai utilisé une approche similaire (écrite en Python) pour déterminer les derniers fichiers mis à jour sur mon site.
A travaillé magnifiquement. Je voulais l'ordre inverse, donc j'ai inversé $ a avec $ b dans le champ de définition de la fonction. Merci Jay! – AVProgrammer
Je viens de l'utiliser à nouveau. Pour la postérité en effet! – AVProgrammer
Ce code accède au système de fichiers chaque fois qu'une comparaison est effectuée (plusieurs fois pour chaque fichier). Selon l'emplacement de votre système de fichiers, cela peut être très lent. En outre, si l'un des fichiers est écrit pendant le tri, alors la modification des temps de fichier pourrait conduire à des résultats de tri bizarres, en fonction de l'algorithme utilisé par usort. Je recommanderais [l'autre réponse] (http://stackoverflow.com/a/3298787/706054), qui évite tous ces problèmes. – Matt
<?php
$items = glob('*', GLOB_NOSORT);
array_multisort(array_map('filemtime', $items), SORT_NUMERIC, SORT_DESC, $items);
Cela n'a pas de sens de passer le résultat de 'array_map' en tant qu'argument destiné à être transmis par référence. Vous allez trier mais alors quoi? Vous ne l'avez plus. – Okonomiyaki3000
Le résultat de 'array_map' est utilisé pour trier le tableau' $ items', qui est également transmis par référence. –
Je vois. Je suppose que cela fonctionnera, une approche similaire est même documentée sur la page 'array_multisort' de php.net. Je pense qu'il y a des fonctions plus appropriées pour cette tâche mais je vais reprendre mon downvote. Ou je le ferais si je pouvais ... désolé. – Okonomiyaki3000
Cette solution est la même que accepted answer, mis à jour avec fonction anonyme :
$myarray = glob("*.*");
usort($myarray, function($a, $b) { return filemtime($a) - filemtime($b); });
Anonymous functions ont été introduites en PHP en 2010. réponse originale est datée 2008.
- 1. Trier par la date la plus proche
- 2. Quelle est la meilleure façon de trier par date?
- 3. Trier NSArray par NSDate, aujourd'hui
- 4. trier les images par LastTimeWrite
- 5. Unix Trier par U
- 6. MySQL Trier par 2 colonnes
- 7. fusionner trier l'implémentation pour trier par longueur de chaîne - python
- 8. Tri des résultats SPARQL par date
- 9. Comment trier une date au format jj/mm/aaaa par mois en utilisant Perl?
- 10. Utilisation de filesort pour trier par colonne datetime dans MySQL
- 11. PHP: trier le tableau par intervalles d'une demi-heure
- 12. Comment trier par nom de projet dans Visual Studio 2008?
- 13. Arbre de recherche d'expressions régulières (glob)
- 14. Comment trier javascript object array par element.name
- 15. Trier par nom, mais ignorer les citations?
- 16. WPF DataGrid trier par zone ComboBox
- 17. Comment trier un NSArray par ordre alphabétique?
- 18. Trier par ne fonctionne pas sur MySql
- 19. SQLite trier par prix ne fonctionne pas
- 20. Comment trier les enregistrements par page
- 21. Comment trier par compte personnalisé avec postgresql?
- 22. Rails: trier une requête par params?
- 23. Trier datagridview par tête de ligne C#
- 24. Trier par critères de recherche C# LINQ
- 25. ASP.NET MembershipUserCollection trier par IsApproved, Commenter
- 26. C# Liste <> Trier par/Regrouper par/Enlever
- 27. Trier par null, puis commander par d'autres variables
- 28. Groupe SQL par "date" question
- 29. MySql 'Ordre par date' Question
- 30. MySQL: grouper par date RANGE?
Avez-vous trouvé cela? (Juste fait une recherche Google sur le titre de votre question): http://www.webdeveloper.com/forum/showthread.php?t=188670 – John