Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przeszukiwanie tablicy, Przeszukiwanie tablicy
max_mcee
post 12.02.2021, 12:33:28
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
gino
post 12.02.2021, 13:07:47
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


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.

Ten post edytował gino 12.02.2021, 13:18:26
Go to the top of the page
+Quote Post
max_mcee
post 12.02.2021, 13:18:21
Post #3





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


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ć.
Go to the top of the page
+Quote Post
gino
post 12.02.2021, 13:42:38
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


Jak wpiszesz frazę "kalkulator wynagrodzeń" to ma wyszukać tylko ją czy wartości "kalkulator" oraz "wynagrodzeń" osobno też?
Go to the top of the page
+Quote Post
max_mcee
post 12.02.2021, 13:53:54
Post #5





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


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
Go to the top of the page
+Quote Post
gino
post 12.02.2021, 13:56:40
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


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

Ten post edytował gino 12.02.2021, 13:57:56
Go to the top of the page
+Quote Post
max_mcee
post 12.02.2021, 14:03:19
Post #7





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


Dziękuję @gino smile.gif
Go to the top of the page
+Quote Post
gino
post 12.02.2021, 14:09:13
Post #8





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


Gdybyś chciał szukać tylko konkretnej frazy to tylko mała zmiana:
Kod
...
if(count(array_intersect($rozbijamy, $qsr)) === count($qsr));
...


Ten post edytował gino 12.02.2021, 14:09:35
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:40