Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sprawdzanie czy coś jest w wielu tablicach
mlody69
post 14.04.2010, 18:57:14
Post #1





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


Witam,
mam taki problem a mianowicie posiadam taki kod:
  1. $grupa1= array(1,2,4,5,6);
  2. $grupa2= array(3,6);
  3. $grupa3= array(12,1,4,22);

I moje pytanie brzmi, jak sprawdzać czy dana cyfra jest w którejś z tych tablic i pokazanie tego odpowiednio w której jest(jeżeli w wielu to też)
przykładowo:
cyfra 1:
Jesteś w grupie
-1
-3

Próbowałem z in_array ale z wieloma grupami to jakoś nie wychodzi
Go to the top of the page
+Quote Post
mortus
post 14.04.2010, 19:03:56
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


in_array?
Go to the top of the page
+Quote Post
mlody69
post 14.04.2010, 19:10:07
Post #3





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


I mam robić tak wiele warunków aby sprawdzić każdą z możliwości?
Go to the top of the page
+Quote Post
MateuszS
post 14.04.2010, 19:12:50
Post #4





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Prosze oto funkcja która powinna pomóc, pierwszy argument to szukana wartość, drugi to tablica, zobacz i przeanalizuj

  1. <?
  2.  
  3. $grupa[1] = array(1,2,4,5,6);
  4. $grupa[2] = array(3,6);
  5. $grupa[3] = array(12,1,4,22);
  6.  
  7.  
  8. function znajdz($zmienna, $grupa)
  9. {
  10. foreach($grupa as $klucz=>$tablica)
  11. {
  12. if(in_array($zmienna, $tablica))
  13. {
  14. echo "Jestes w grupie ".$klucz."<br />";
  15. }
  16. }
  17. }
  18.  
  19. znajdz(1, $grupa);
  20.  
  21. ?>


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
mortus
post 14.04.2010, 19:16:31
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Niekoniecznie, możesz umieścić tablice w tablicy i zrobić pętlę
  1. $liczba = 3;
  2. $grupy = array(0 => array(1,2,4,5,6), 1 => array(3,6));
  3. foreach($grupy as $numer => $grupa) {
  4. if(in_array($liczba, $grupa)) {
  5. echo $liczba . ' jest w tablicy ' . $numer . '<br />';
  6. }
  7. }
Ale chyba ktoś już mnie uprzedził tongue.gif

Ten post edytował mortus 14.04.2010, 19:16:47
Go to the top of the page
+Quote Post
mlody69
post 14.04.2010, 19:29:39
Post #6





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


Dziękuję, dokładnie o takie coś mi chodziło. Mam jeszcze jedno pytanie odnośnie tego a mianowicie czy można jakoś oddzielić wyniki tego sprawdzania czy element jest w tablicach i wypisać inaczej, np:
Zeby wypisywało w ten sposób:
$liczba znajduje się w tablicy 1 , 2, 3
Go to the top of the page
+Quote Post
MateuszS
post 14.04.2010, 19:35:54
Post #7





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


No bez problemu,

  1. <?
  2.  
  3. $grupa[1] = array(1,2,4,5,6);
  4. $grupa[2] = array(3,6);
  5. $grupa[3] = array(12,1,4,22);
  6.  
  7.  
  8. function znajdz($zmienna, $grupa)
  9. {
  10. $ile = count($grupa);
  11. $k=1;
  12. foreach($grupa as $klucz=>$tablica)
  13. {
  14. if(in_array($zmienna, $tablica))
  15. {
  16. echo $klucz;
  17. if($k!=$ile) echo ", ";
  18. }
  19. $k++;
  20. }
  21. }
  22. $liczba=1;
  23. echo $liczba." znajduje sie w tablicy ";
  24. znajdz($liczba, $grupa);
  25.  
  26. ?>


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
mlody69
post 14.04.2010, 20:11:40
Post #8





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


Dziękuję, bardzo mi to pomogło i już teraz wiem jak rozwiązywać tego typu problemy smile.gif

Niestety to jeszcze nie koniec moich pytań smile.gif
Teraz mam takie pytanie, czy można podlinkować każdy wynik tego szukania, tzn wypisuje np
$liczbaznajduje sie w tablicy 1,2,4,5
i chcę zrobić wyświetlanie w takim formacie:
$liczba znajduje sie w tablicy <a href="?grupa=1">1</a>, <a href="?grupa=2">2</a> itd.

Niestety kombinowałem ale nie wymyśliłem, jeżeli można-proszę o wskazówki.
Go to the top of the page
+Quote Post
MateuszS
post 14.04.2010, 20:50:57
Post #9





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


To są podstawy PHP, z analizy kodu powinieneś łatwo dojść jak to zrobić (połączyć HTML z PHP),

  1. echo "<a href='?grupa=".$klucz."'>".$klucz."</a>";


Wstaw to w odpowiednie miejsce funkcji.

Ten post edytował MateuszScirka 14.04.2010, 20:52:07


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
mortus
post 14.04.2010, 21:02:37
Post #10





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Jeżeli informacja, że np. liczba 3 występuje w tablicy pierwszej, drugiej, trzeciej, itd. ma się pojawiać w kilku miejscach, to najlepiej utworzyć kolejną tablicę, która będzie wskazywać, w których tablicach jest liczb 3:
  1. $liczba = 3;
  2. $grupy = array(0 => array(1,2,4,5,6), 1 => array(3,6));
  3. foreach($grupy as $numer => $grupa) {
  4. if(in_array($liczba, $grupa)) {
  5. // jeśli $liczba jest w tablicy $grupy[$numer]
  6. // to wstawiamy numer do specjalnej tablicy $isIn
  7. $isIn[] = $numer;
  8. }
  9. }
  10. // a teraz łatwo możemy wyświetlić zdanie
  11. echo 'Liczba ' . $liczba . ' znajduje się w tablicy ' . implode(', ', $isIn) . '.<br />';
  12. // albo utworzyć linki
  13. echo '<ul>';
  14. foreach($isIn as $numerTablicy) {
  15. echo '<li><a href="?grupa=' . $numerTablicy . '">' . $numerTablicy . '</a></li>';
  16. }
  17. echo '</ul>';
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: 29.06.2025 - 10:07