Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Trochę inne sortowanie tablicy
Forum PHP.pl > Forum > PHP
japek
Nie potrafię sobie poradzić z posortowaniem takiej tablicy wg. daty zawartej w nazwach:

  1. [0] => T501031_2006.11.21.LOG
  2. [1] => T104000_2006.11.22.LOG
  3. [2] => T505030_2006.11.23.LOG
  4. [3] => T105033_2006.11.26.LOG
  5. [4] => T200038_2006.11.28.LOG
  6. [5] => pusty_2006.11.20.LOG
  7. [6] => pusty_2006.11.24.LOG
  8. [7] => pusty_2006.11.25.LOG
  9. [8] => pusty_2006.11.27.LOG
  10. [9] => pusty_2006.11.29.LOG
  11. [10] => pusty_2006.11.30.LOG


Wie ktoś jak sobie z tym poradzić? tzn. wiem jak wyciągnąć daty i posortować ale nie wiem jak sportotem zrobić całe nazwy plików sad.gif
Sedziwoj
wystarczy, że przy sortowaniu masz id danej daty np. dla T200038_2006.11.28.LOG to 4, i wtedy wystarczy przetasować, czy raczej przypisać do odpowiedniego id odpowiednią nazwę.
Choć może łatwiej i wydajniej na przyszłość zmienić sposób nazewnictwa na 2005.01.28_T2000003.LOG
JaRoPHP
Skorzystaj @japek z funkcji usort().
Jej implementacja wraz z zastosowaniem dla Twojego problemu może wyglądać następująco:
  1. <?php
  2. $a = array();
  3. $a[] = "T501031_2006.09.21.LOG";
  4. $a[] = "T104000_2006.11.22.LOG";
  5. ...
  6.  
  7. usort($a, 'sortArray');
  8. foreach ($a as $k) {
  9. echo $k . '<br />';
  10. }
  11.  
  12. function sortArray($a, $b) {
  13. $a = substr($a, strpos($a, '_') + 1);
  14. $b = substr($b, strpos($b, '_') + 1);
  15.  
  16. if($a > $b) {
  17. return 1;
  18. }
  19.  
  20. if($a < $b) {
  21. return -1;
  22. }
  23.  
  24. return 0;
  25. }
  26. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.