Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sprawdzanie czy coś jest w wielu tablicach
mlody69
post
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
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
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
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. ?>
Go to the top of the page
+Quote Post
mortus
post
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ł (IMG:style_emoticons/default/tongue.gif)

Ten post edytował mortus 14.04.2010, 19:16:47
Go to the top of the page
+Quote Post
mlody69
post
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
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. ?>
Go to the top of the page
+Quote Post
mlody69
post
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 (IMG:style_emoticons/default/smile.gif)

Niestety to jeszcze nie koniec moich pytań (IMG:style_emoticons/default/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
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
Go to the top of the page
+Quote Post
mortus
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 17:04