Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Sortowanie i wyświetlanie elementów
bolek117
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.05.2007

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


Witam

Mam następujący problem. W pętli z tabeli pobieram z bazy jedno pole w którym znajdują się wyrazy przedzielone przecinkami np. "tag1, tag2, tag3, tag2, tag3, tag2". Rozbijam je do pojedynczych wyrazów funkcją Explode i zapisuje je w tablicy (array). Przykładowa tablica wygląda tak:
  1. Array
  2. (
  3. [0] => tag1
  4. [1] => tag2
  5. [2] => tag3
  6. [3] => tag2
  7. [4] => tag3
  8. [5] => tag2
  9. )


Następnie funkcją array_count_values() zliczam ilość powtórzeń każdego z wyrazów. Przykładowa tablica wygląda tak:
  1. Array
  2. (
  3. [tag1] => 1
  4. [tag2] => 3
  5. [tag3] => 2
  6. )


Chciałbym następnie posortować te tagi według ilości powtórzeń (od największej od najmniejszej) a następnie wyświetlić je. Przykładowy wynik powinien wyglądać tak:
  1. tag2, tag3, tag1


Jak to zrobić?? Przyjmę każdy pomysł, nawet zmianę kodu od podstaw.

Ten post edytował bolek117 5.12.2007, 12:36:59
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


array_sort() ??
Go to the top of the page
+Quote Post
bolek117
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.05.2007

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


Wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dokładnie chodziło o funkcję arsort(). Dwa dni nad tym siedziałem, byłem już blisko bo przy funkcji sort() ale nie udawało mi się, chociaż miałem kodu na 4kb (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) A oto jaki kod zastosowałem:
  1. <?php
  2. //Definicja danych do pobrania
  3. $result = mysql_query("SELECT tags FROM prefix_art");
  4.  
  5. //Pobierz dane z bazy w pętli
  6. while($row = mysql_fetch_array($result)) {
  7.  
  8. //Rozbij wyniki z bazy na pojedyncze wyrazy
  9. $tags = explode(", ", $row['tags']);
  10.  
  11. //Zlicz łączną ilość wyrazów
  12. $ile_tag = count($tags);
  13.  
  14. //Stwóż tablice z podanych wyrazów
  15. for($i=0;$i<$ile_tag;$i++) {
  16. $tab[] = $tags[$i];
  17. }
  18. }
  19.  
  20. //Zlicz ilość powtórzeń każdego wyrazu w tabeli
  21. $ile = array_count_values($tab);
  22.  
  23. //Posortuj wyniki od największego do najmniejszego
  24. $tablica_sortowana = arsort($ile);
  25.  
  26. $i = 0;
  27.  
  28. //Wyświetl wyniki
  29. foreach($ile as $klucz => $wartosc) {
  30. $i++;
  31. echo "$klucz (Ilość powtórzeń: $wartosc); ";
  32.  
  33. //Zatrzymaj pętle po wyświetleniu x wyników
  34. $x = 5;
  35. if ($i >= $x) break;
  36. }
  37. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 12:54