Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sortowanie :)
Forum PHP.pl > Forum > Przedszkole
lopez86
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 sad.gif
zib
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. ?>
lopez86
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 smile.gif
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.