Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przeszukiwanie tablicy
Forum PHP.pl > Forum > Przedszkole
max_mcee
Cześć. Napisałem kod, który pobiera frazę z GET i przeszukuje ją w poniższej tablicy. Wszystko działa świetnie do czasu, kiedy wprowadzona jest jedna wartość np. "2021", otrzymuje dwa linki:
<a href="kalkulator_wynagrodzen.php">Kalkulator wynagrodzeń 2021</a>
<a href="skladki_zus.php">Składki ZUS 2021</a>

jeśli jednak wprowadzę frazę np. "kalkulator wynagrodzeń", nie otrzymam żadnego wyniku.
Proszę o pomoc w rozszerzeniu wyszukiwarki o wyszukiwanie kilku wyrazów jednocześnie. Dziękuję smile.gif

  1. $qts = trim(strtolower($_GET['q']));
  2. $aArr1 = array('ą', 'ę', 'ć', 'ó', 'ś', 'ł', 'ż', 'ź', 'ń');
  3. $aArr2 = array('a', 'e', 'c', 'o', 's', 'l', 'z', 'z', 'n');
  4. $qsr = str_replace($aArr1, $aArr2, $qts);
  5.  
  6. $bazadanych = array(
  7. 'kalkulator,wynagrodzen,2021' => '<a href="kalkulator_wynagrodzen.php">Kalkulator wynagrodzeń 2021</a>',
  8. 'skladki,zus,2021' => '<a href="skladki_zus.php">Składki ZUS 2021</a>',
  9. 'kalkulator,brutto,na,netto' => '<a href="brutto_na_netto.php">Kalkulator brutto na netto</a>',
  10. 'kalkulator,netto,na,brutto' => '<a href="netto_na_brutto.php">Kalkulator netto na brutto</a>',
  11. );
  12.  
  13.  
  14. foreach ($bazadanych as $str => $klucz) {
  15. $rozbijamy = explode(",", $str);
  16. if(in_array($qsr, $rozbijamy)) {
  17. echo '<li>' . $klucz . '</li>';
  18. }
  19. }
gino
Zrób sobie print_r tablicy $rozbijamy to zobaczysz dlaczego tak jest. Nie masz w tej tablicy wartości "kalkulator wynagrodzeń". Jak sam nazwałeś tablice masz to porozbijane na poszczególne wyrazy.

edit:

Jeszcze dokładniej to poszukujesz frazy "kalkulator wynagrodzen" w wartościach tablic:

Kod
Array ( [0] => kalkulator [1] => wynagrodzen [2] => 2021 )
Array ( [0] => skladki [1] => zus [2] => 2021 )
Array ( [0] => kalkulator [1] => brutto [2] => na [3] => netto )
Array ( [0] => kalkulator [1] => netto [2] => na [3] => brutto )


Nie ma takiej wartości.
max_mcee
Cytat(gino @ 12.02.2021, 13:07:47 ) *
Zrób sobie print_r tablicy $rozbijamy to zobaczysz dlaczego tak jest. Nie masz w tej tablicy wartości "kalkulator wynagrodzeń". Jak sam nazwałeś tablice masz to porozbijane na poszczególne wyrazy.

Zgadza się. Jednak zastanawiam się jak rozbić to na pojedyncze wyrazy i po nich szukać.
gino
Jak wpiszesz frazę "kalkulator wynagrodzeń" to ma wyszukać tylko ją czy wartości "kalkulator" oraz "wynagrodzeń" osobno też?
max_mcee
Cytat(gino @ 12.02.2021, 13:42:38 ) *
Jak wpiszesz frazę "kalkulator wynagrodzeń" to ma wyszukać tylko ją czy wartości "kalkulator" oraz "wynagrodzeń" osobno też?


kalkulator oraz wynagrodzeń osobno też w całej tablicy
gino
można tak:

Kod
$str = "kalkulator wynagrodzeń";
$qts = explode(' ',$str);

....

if(count(array_intersect($rozbijamy, $qsr)) > 0)
echo '<li>' . $klucz . '</li>';
...


edit reszta kodu Twojego
max_mcee
Dziękuję @gino smile.gif
gino
Gdybyś chciał szukać tylko konkretnej frazy to tylko mała zmiana:
Kod
...
if(count(array_intersect($rozbijamy, $qsr)) === count($qsr));
...
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.