Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] sortowanie :)
lopez86
post
Post #1





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


Mam coś takiego jak poniżej - wyświetla mi wszystkie słowa w kolejności od najmniej występujących w tekście do najczęściej powtarzających się. Chcę żeby mi wyświetlało nie wszystkie słowa tylko 3 najczęściej występujące. Próbowałem zliczyć słowa str_word_count z flagą 0 i wtedy wyciągnąć trzy ostatnie słowa ale nic z tego .
Kod wygląda tak :

  1. <?php
  2. $str = $_POST['tresc'];
  3.  
  4.  
  5. if(isset($str)){
  6. $words = str_word_count($str, 1);
  7. $frq = array_count_values($words);
  8. asort($frq);
  9.  
  10. foreach ($frq as $word => $times)
  11.  
  12. if($times >= 4 && strlen($word) >= 5){
  13.  
  14. echo $word." was found ".$times." times.<br>";
  15. }
  16. }?>


Próbowałem też w pętli for i jako argument ilość słów ale wtedy znowu jest problem z tym że nie omija słów według warunków jaki mam w foreach - strlen czyli wyrzuca też krótkie słowa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował lopez86 2.01.2007, 18:16:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
zib
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.04.2006

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


Przerobilem tylko troche twoj kod zapewne idzie to lepiej i szybciej zrobic nie wiem co jest celem twojego kodu

  1. <?php
  2. $str = $_POST['tresc'];
  3.  
  4. if(isset($str))
  5. {
  6.  $words = str_word_count($str, 1);
  7.  $frq = array_count_values($words);
  8.  asort($frq);
  9.  
  10.  $tablica = array_reverse($frq); //odwrocenie tablicy
  11.  $i=0; //zmienna pomocnicza do wyswietlenia tylko trzech najczestrzych wyrazow
  12.  
  13.  foreach ($tablica as $word => $times)
  14.  if($times >= 4 && strlen($word) >= 5)
  15. {
  16. $i++; //zliczamy ilosc slow wyswietlonych spelniajacych kryteria
  17. echo $word.' was found '.$times.' times.<br>';
  18.  
  19.  if($i >= 3)
  20. break; //gdy wyswietlilismy 3 slowa konczymy petle
  21. }
  22. }
  23. ?>
Go to the top of the page
+Quote Post
lopez86
post
Post #3





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


Dzięki ci Zib - 10 godzin nad tym siedziałem i nic, jeszcze raz dzięki - co do tego że da się to łatwiej zrobić - to ja zawsze jestem głupkiem który wpada na najtrudniejszy do wykonania sposób . Potrzebuje to do mojej wyszukiwarki - bardzo prostej na stronkę Pozdro dla ciebie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował lopez86 2.01.2007, 20:49:09
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 - 13:45