Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przeszukiwanie tablicy dwuwymiarowej, zwracanie klucza
ficiek
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 9.09.2011
Skąd: Kraków

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


Niestety napotkałem problem z którym nie mogę sobie poradzić.

Tablica zbudowana jest w poniższy sposób. Przechowuje ona elementy znalezione w bazie MySQL, pasujące do podanych przez użytkownika słów. Każde podane słowo jest wyszukiwane osobno, podany tekst nie jest traktowany jako fraza.
  1. (
  2. [0] => Array
  3. (
  4. [id] => 1
  5. [header] => Artykuł
  6. [date] => 1317559793
  7. [relevance] => 1
  8. )
  9. )

Chcę jednak uniknąć powtórzeń. Można by łatwo uniknąć tego wykonując na tablicy array_unique(), ale jak zapewne ktoś się domyślił relevance przechowuje liczbę pasujących wyszukiwanych słów. Przy ich pomocy będzie można odpowiednio wyświetlić wyniki.

Przechodzimy do sedna: muszę wyszukać w takiej dwuwymiarowej tablicy czy wpisano już taki artykuł. Jeśli tak revelance+=1. Jeśli nie dodajemy do tablicy.
  1. if (w tablicy $found znajduje się wiersz w którym id=$foo)
  2. {
  3. $found[ten wiersz]['relevance']+=1;
  4. }
  5. else
  6. {
  7. dodajemy do tablicy;
  8. }


Nie udało mi się wykorzystać array_search, prawdę mówiąc nie jestem nawet pewien czy ta funkcja działa dla dwuwymiarowej tablicy. Jestem otwarty na inne rozwiązania całego procesu wyszukiwania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Dominis
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 19
Dołączył: 13.02.2010

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


  1. <?php
  2. //tablica id|arty|data|rev
  3. $tabArr[0] = Array(2, 'art', '', 6);
  4. $tabArr[1] = Array(1, 'art', '', 10);
  5. $tabArr[2] = Array(2, 'art', '', 6);
  6. $tabArr[3] = Array(1, 'art', '', 44);
  7. $tabArr[4] = Array(2, 'art', '', 2);
  8. $tabArr[5] = Array(1, 'art', '', 0);
  9. $tabArr[6] = Array(2, 'art', '', 6);
  10. $tabArr[7] = Array(1, 'art', '', 4);
  11.  
  12. //wyswietlenie tablicy
  13. foreach($tabArr as $row){
  14. echo '<br />';
  15. foreach($row as $wynik)
  16. echo '|'.$wynik;
  17. }
  18.  
  19. //zrobienie pomocniczej tablicy do sortowania
  20. $i=0;
  21. foreach($tabArr as $row){
  22. $i++;
  23. //nasz rev
  24. $pomArr[$i] = $row[3];
  25. }
  26.  
  27. //sortowanie
  28. array_multisort($pomArr, SORT_ASC, $tabArr);
  29. echo '<br />********************<br />';
  30.  
  31. //wyswietlenie posortowanej tablicy
  32. foreach($tabArr as $row2){
  33. echo '<br />';
  34. foreach($row2 as $wynik2)
  35. echo '|'.$wynik2;
  36. }
  37. ?>


wynik:

  1. |2|art||6
  2. |1|art||10
  3. |2|art||6
  4. |1|art||44
  5. |2|art||2
  6. |1|art||0
  7. |2|art||6
  8. |1|art||4
  9. ********************
  10.  
  11. |1|art||0
  12. |2|art||2
  13. |1|art||4
  14. |2|art||6
  15. |2|art||6
  16. |2|art||6
  17. |1|art||10
  18. |1|art||44


Ten post edytował Dominis 22.10.2011, 20:12:31
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 18:10