Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie czy coś jest w wielu tablicach
Forum PHP.pl > Forum > Przedszkole
mlody69
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
mortus
in_array?
mlody69
I mam robić tak wiele warunków aby sprawdzić każdą z możliwości?
MateuszS
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. ?>
mortus
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
mlody69
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
MateuszS
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. ?>
mlody69
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.
MateuszS
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.
mortus
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>';
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.