Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Tablica dwuwymiarowa - problem
Forum PHP.pl > Forum > Przedszkole
Gość_bartas1979
Witam. Mój problem zapewne wyda coniektórym się zabawny więc prosze o wyrozumiałość.

Jaki zastosować warunek do tablicy dwuwymiarowej by po napotkaniu przez program na okresloną wartość (tablice) wylistowac jej dane po czym zaniechac dalszego przeszukiwania tabeli.

Niestety z przykrościa musze stwierdzić iż ten problem mnie przerasa (a swoją przygodę z php dopiero rozpoczynam). Dzięki z góry za pomoc.
thornag
  1. <?php
  2. $array = array(25,323,321,3101,102021,20101,666,419,291,21);
  3.  
  4. foreach ( $array as $b )
  5. {
  6.  echo $b.'<br />';
  7.  if ( $b == 666 ) break;
  8. }
  9. ?>



@thornag: spróbuj czasem napisać bardziej wyraźny kod.... poprawiam go /tiraeth/
Gość_bartas1979
Hmm - chyba nie wyjaśniłem dokłądnie że chodzi mi o taka tablicę:
Kod
array ("a" => ("a", "b"," c","d"), "b" => ("a", "b", "c", "d"), "c" => ("a", "b", "c", "d"));


Mam zarazem tez pytanie odnośnie instrukcji break - czy ona zatrzymuje tylko pętle czy cały program?
LBO
Musisz zastosować dwie pętle foreach. Jedną w drugiej, by przejść po wszystkich elementach obu tablic.
Gość_bartas1979
Robię tak. Niby wypisuje mi wszystkie elementy ale... wypisuje mi wszystkie. Nie bardzo wiem jak zrobić by po znalezieniu elementu w pierwszej tablicy, wylistował jedynie jej zawartosć a nie wszystkich innych. Kombinuje jak koń pod górkę i zawsze to samo - wciąz listuje mi zawartośc wszystkich tablic, tylko pierwszej albo... rzednej.
Qvazar
pokaż kod to może coś się zobaczy
Gość_bartas1979
  1. <?php
  2.  
  3.  
  4. function rys_tabele($widok) {
  5. $menu_lista = array ( "Kartoteka" => array ("Przeglądaj kartotekę", "Dodaj zwierzę", "Edytuj zwierzę", "Usuń zwierzę", "Wyloguj się z systemu"),
  6. "Znalezione" => array ("Przeglądaj zgłoszenia", "Dodaj zgłoszenie", "Edytuj zgłoszenie", "Usuń zgłoszenie", "Wyloguj się z systemu"),
  7. "Zagubione" => array ("Przeglądaj zgłoszenia", "Dodaj zgłoszenie", "Edytuj zgłoszenie", "Usuń zgłoszenie", "Wyloguj się z systemu"),
  8. "Osoby" => array ("Przeglądaj osoby", "Dodaj osobę", "Edytuj osobę", "Usuń osobę", "Wyloguj się z systemu"),
  9. "Statystyka" => array ("Oddane", "Odebrane", "Wyloguj się z systemu"));
  10.  
  11. while (list($menu) = each($menu_lista))
  12. {
  13. while (list(,$lista) = each($menu_lista[$menu]))
  14. {
  15. echo(" $lista"); //
  16. }
  17. }
  18. }
  19.  
  20. ?>


Zastosowałem taki mechanizm listowania tych tablic. Napisze pokrótce o co mi biega - chce stworzyć menu które bedzie generowane z tychże tablic. Po wczytaniu zawartosci strony ma sie wylistować głowna cześć tablei (w tym przypadku "Kartoteka, Zagubione, Znalezione, Osoby Statystyka"). Po kliknieciu na w/w wysyłam GETem do strony zmieną która mówi o wczytaniu poszczegolnych stron np. Kartoteka a jej menu powinno byc wyciagniete z drugiej tablicy (w tym przypadku "Przeglądaj kartotekę", "Dodaj zwierzę", "Edytuj zwierzę", "Usuń zwierzę", "Wyloguj się z systemu"). Mam nadzieję że rozumiecie o co mi biega. Być moze jest na to inny patent ale... ja wpadłem akurat na coś takiego. Pozwoli mi to szybko dodawac kolejne menu poprzez umieszczanie w includowanym pliku kolejnych tabel wraz z wartosciami menu.
kszychu
Jak ja nie lubię list()
Polecam tak:
  1. <?php
  2. foreach($menu_lista as $menu_1) {
  3.  foreach($menu_1 as $wartosc) {
  4. echo $wartosc;
  5.  }
  6. }
  7. ?>
bigZbig
  1. <?php
  2. foreach ($menu_lista as $key => $aValues) {
  3. if($key == "Znalezione") {
  4. foreach ($aValues as $value) {
  5. echo $value." <br />";
  6. }
  7. break;
  8. }
  9. }
  10. ?>
Guest
No i dupa - jak nie działa tak nie działa. Teraz wystukałem cos takiego:
Kod
$menu_kartoteka = array("Przeglądaj kartotekę" => "przegladaj_kartoteke", "Dodaj zwierzę" => "dodaj_zwierze", "Edytuj zwierzę" => "edytuj_zwierze", "Usuń zwierzę" => "usun_zwierze", "Wyloguj się z systemu" => "wyloguj");
    $menu_zagubione = array("Przeglądaj zgłoszenia", "Dodaj zgłoszenie", "Edytuj zgłoszenie", "Usuń zgłoszenie", "Wyloguj się z systemu");
    $menu_znalezione = array("Przeglądaj zgłoszenia", "Dodaj zgłoszenie", "Edytuj zgłoszenie", "Usuń zgłoszenie", "Wyloguj się z systemu");
    $menu_osoby = array("Przeglądaj osoby", "Dodaj osobę", "Edytuj osobę", "Usuń osobę", "Wyloguj się z systemu");
    $menu_statystyka = array("Oddane", "Odebrane", "Wyloguj się z systemu");
    
echo ('<img src="_img/_tabele/'.$widok.'.jpg" alt="logowanie" />');
echo ('<ul>');
switch ($widok) {
    case "kartoteka":
  foreach ($menu_kartoteka as $menu_index => $menu_element){
  echo ('<li><a href="index.php?widok=kartoteka&menu=[B]W TYM MIEJSCU CHCE PRZEKAZYWAĆ WARTOSC Z TABLICY "MENU_KARTOTEKA"[/B]">'.$menu_element.'</a></li>');
  }
  break;
    case "zagubione":
  foreach ($menu_zagubione as $menu_index    => $menu_element){
  echo ('<li><a href="index.php?widok=zagubione&menu=">'.$menu_element.'</a></li>');
  }
  break;
    case "znalezione":
  foreach ($menu_znalezione as $menu_index    => $menu_element){
  echo ('<li><a href="index.php?widok=znalezione&menu=">'.$menu_element.'</a></li>');
  }
  break;
    case "osoby":
  foreach ($menu_osoby as $menu_index    => $menu_element){
  echo ('<li><a href="index.php?widok=osoby&menu=">'.$menu_element.'</a></li>');
  }
  break;
    case "statystyka":
  foreach ($menu_statystyka as $menu_index    => $menu_element){
  echo ('<li><a href="index.php?widok=statystyka&menu=">'.$menu_element.'</a></li>');
  }
  break;
    echo ('</ul>');
    }
}


Mimo stosowania Foreach lub list ciagle zgłasza mi jakies błedy że podaje niewłaściwe argumenty - wymiękam po prostu.
Gość_bartas1979
Sorrka - juz wiem - ale kucha ;-) Nie wziołem elementów tablicy w nawaiasy i zapomniał dodać array-a. Kurcze az sie rumienie ze wstydu. Sorrka i dziekuje - jak cos jeszcze nei pójdzie to sie odezwe. Dzieki za pomoc.
bigZbig
Oj kombinujesz jak kon pod gorke

  1. <?php
  2. function listMenu ($widok) {
  3. $menu = array ( "Kartoteka" => array ("Przeglądaj kartotekę", "Dodaj zwierzę", "Edytuj zwierzę", "Usuń zwierzę", "Wyloguj się z systemu"),
  4. "Znalezione" => array ("Przeglądaj zgłoszenia", "Dodaj zgłoszenie", "Edytuj zgłoszenie", "Usuń zgłoszenie", "Wyloguj się z systemu"),
  5. "Zagubione" => array ("Przeglądaj zgłoszenia", "Dodaj zgłoszenie", "Edytuj zgłoszenie", "Usuń zgłoszenie", "Wyloguj się z systemu"),
  6. "Osoby" => array ("Przeglądaj osoby", "Dodaj osobę", "Edytuj osobę", "Usuń osobę", "Wyloguj się z systemu"),
  7. "Statystyka" => array ("Oddane", "Odebrane", "Wyloguj się z systemu"));
  8.  
  9. foreach ($menu as $index => $elements){
  10. if($index == $widok) {
  11. foreach ($elements as $element) {
  12. echo ('<li><a href="index.php?widok=kartoteka&menu='.$element.'">'.$element.'</a></li>');
  13. }
  14. }
  15. }
  16. }
  17.  
  18. echo ('<img src="_img/_tabele/'.$widok.'.jpg" alt="logowanie" />');
  19. echo ('<ul>');
  20. listMenu($widok);
  21. echo ('</ul>');
  22. ?>
Guest
Dzieki za pomoc. Ruszyła wersja "moja". Chyle czoła i po stokroć dziekuje że zechcieliście poświęcić swój czas takiemu laikowi jak ja. Mysle że jeszcze bede tutaj niepokił Was nie raz. Pozdrawiam
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.