Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Trochę inne sortowanie tablicy
japek
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #3





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 06:55