Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak posortować liczby zawarte w zmiennej?
Forum PHP.pl > Forum > PHP
Savail
Witam
Napisalem skrypt ktory oblicza %podobienstwa miedzy wyrazem wpisanym w okienko i wyrazami w pliku txt. Chcialbym posortowac wyniki podobienstwa od najwiekszego do najmniejszego. Probowalem funkcji sort sort_numeric itd ale to dziala tylko na tablice, a tych % nie mam jak wpisac do tablicy bo za kazdym razem, gdy wpisze sie inny wyraz w okienku to sa inne % podobienstwa. Kombinowalem troche ale nie wychodzi mi ciagle... Bede wdzieczny za kazda porade

PS
Do obliczenia % podobienstwa uzylem funkcji similar_text
Crozin
Yyy... ale to przecież porównujesz po kolei każdy wyraz z pliku tekstowego z podanym - więc naturalnym byłoby użycie tablicy do przechowywania tych słów. Później w trakcie sprawdzania podobieństwa robisz tak by w rezultacie otrzymać tablicę typu:
Kod
Array (
  [slowo1] => 2,
  [slowo5] => 42,
  [slowon] => 15
)
Później już tylku sort i foreach do wyświetlenia wyników.
Savail
no rzeczywiscie wybralem glupszy sposob na przechowywanie slow, zaraz sprobuje w array je wstawic

Napisalem cos takiego i wyswietla sie lista gier oraz obok % podobienstwa, tylko ze lista gier to tablica a % to juz inna zmienna, a ja chcę umiescic w tablicy i nazwy gier i ich %, tak jak poradzil mi kolega wyzej. Moze moglby ktos pomoc, bo nadal mi nie wychodzi. Dzieki za wszelkie rady

  1. <?php
  2. echo "Wyniki wyszukiwania dla"." ".$_POST['szukaj'];
  3. $string1 = $_POST['szukaj'];
  4. $string2 = array("9dragons", "2moons", "12sky", "4story", "age of armor", "age of conan", "aion", "air rivals", "Albatross", "Anarchy online", "Archlord", "Asda story", "Atlantica online", "Atulos online");
  5.  
  6. $ile = count($string2);
  7. for($i<0; $i<$ile; $i++){
  8.  
  9.  
  10.  
  11.  
  12. similar_text($string1, $string2[$i], $procent);
  13. echo "<br />".$string2[$i].$procent;
  14. }
  15. ?>

Crozin
1) Nie jestem Twoim kolegą. winksmiley.jpg
2) Zamiast tego for-a użyj foreach-a
3) Przed pętlą utwórz sobie pomocniczą zmienną $result, która będzie tablicą
4) Przy każdym przejściu pętli dopisuj do pow. zmiennej kolejny element, gdzie kluczem jest aktualnie przetwarzany wyraz, a wartością wynik similar_text(...)
Savail
ok zrobilem to tak i dziala smile.gif Dzieki za pomoc
  1. <?php
  2. echo "Wyniki wyszukiwania dla"." ".$_POST['szukaj'];
  3. $string1 = $_POST['szukaj'];
  4. $string2 = array("9dragons", "2moons", "12sky", "4story", "age of armor", "age of conan", "aion", "air rivals", "Albatross", "Anarchy online", "Archlord", "Asda story", "Atlantica online", "Atulos online");
  5.  
  6. $result = array();
  7.  
  8. similar_text($string1, $string2[0], $procent);
  9.  
  10.  
  11. $result = array("$string2[0] => $procent");
  12. echo $result[0];
  13.  
  14.  
  15. ?>
bim2
Zastanów się nad
  1. $result = array("$string2[0] => $procent");
  2. echo $result[0];
Bo nie robisz tego poprawnie.
Savail
Kombinowalem ale nie wiem czemu robie to niepoprawnie, tylko ze teraz mam problem z posortowaniem tablicy $result tak aby wyniki z najwyzszym podobienstwem wysiwetlaly sie jako pierwsze... Obrecnie mam taki kod:
  1. <?php
  2. echo "Wyniki wyszukiwania dla"." ".$_POST['szukaj'];
  3. $string1 = $_POST['szukaj'];
  4. $string2 = array("9dragons", "2moons", "12sky", "4story", "age of armor", "age of conan", "aion", "air rivals", "Albatross", "Anarchy online", "Archlord", "Asda story", "Atlantica online", "Atulos online");
  5.  
  6. $result = array();
  7.  
  8.  
  9. similar_text($string1, $string2[0], $procent0);
  10. similar_text($string1, $string2[1], $procent1);
  11. similar_text($string1, $string2[2], $procent2);
  12. similar_text($string1, $string2[3], $procent3);
  13. similar_text($string1, $string2[4], $procent4);
  14. similar_text($string1, $string2[5], $procent5);
  15. similar_text($string1, $string2[6], $procent6);
  16. $result = array("$string2[0] => $procent0", "$string2[1] => $procent1", "$string2[2] => $procent2", "$string2[3] => $procent3", "$string2[4] => $procent4", "$string2[5] => $procent5", "$string2[6] => $procent6");
  17.  
  18. $ile = count($result);
  19. for($i=0; $i<$ile; $i++){
  20. echo "<br />".$result[$i];
  21. }
  22. ?>

Wyswietlaja sie tak jak chcialem nazwy porownywanych slow oraz % ich podobienstwa
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.