Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SWITCH] operator ||
Forum PHP.pl > Forum > PHP
TheArt
Czy prawidłowym jest zapis

  1. case 'oferta' || 'produkty' || 'sklepy' :
wookieb
nie
  1. case 'oferta':
  2. case 'produkty':
  3. case 'sklepy':
  4.  

Ale oczywiście mogłeś to sprawdzić...
TheArt
właśnie dziwiłem się że operator || nie działa, jak inaczej to zrobić żeby nie pisać setek linii kodu
Meares
Zabijecie mnie za to - użyj ifów. smile.gif
darko
Możesz trzymać wartości w tablicy $gdzie i sprawdzać :
  1. if(in_array($co, $gdzie)) {
  2. // i tutaj np. wyciągasz klucz odpowiadający znalezionej wartości za pomocą array_search
  3. }
  4.  
  5. // albo
  6.  
  7. if (array_key_exists($co, $gdzie)) {
  8. // i tu znowu jakaś operacja powiązana ze znalezionym $co
  9. }


Możliwości jest sporo.
thek
TheArt.. Wookieb Ci już napisał :/
użyj
  1. case "jedna":
  2. case "druga":
  3. case "trzecia:"
  4. //tu instrukcje;
  5. break;
Switch działa tak, że wykonuje instrukcje do czasu aż napotka break. Jeśli go nie napotka to wykonuje wszystko dalej, nawet jeśli to następny case. Tak więc jeśli nie trafi na żaden z trzech to pójdzie dalej szukać. Jeśli trafi to wykona instrukcję spod "trzecia", bo są one instrukcjami widocznymi także dla "pierwsza" i "druga". Dlatego właśnie zamykasz zazwyczaj poprzez break ciąg instrukcji dla każdego case. Jeśli jednak wiesz, że coś jest wspólne, to walisz je bez break obok i ewentualnie przy drobnych różnicach w głównym bloku instrukcji wyszczególniasz gdzie mają być drobne modyfikacje.
  1. switch (uri::segment(3)) {
  2. case 'nowi':
  3. //ustawianie podstawowych parametrów
  4. $this->podstrona = new View('domyślny widok');
  5. js::add('media/js/jquery.dataTables.min.js');
  6. css::add('media/css/datatables.css');
  7. //ciąg instrukcji
  8. $this->podstrona->zmienna = $this->model->pobieranie_danych();
  9. break;
  10. case 'aktywni':
  11. case 'wylaczeni':
  12. case 'wygasa':
  13. case 'logowania':
  14. case 'leniwi':
  15. case 'callcenter':
  16. //sprawdzanie, czy użytkownik ma prawo odwiedzić podstronę:
  17. if(!valid::level(0,1)) {url::redirect_home();}
  18. //ustawianie podstawowych parametrów
  19. $this->podstrona = new View('inny_panel');
  20. $this->podstrona->typ = uri::segment(3);
  21. js::add('media/js/jquery.dataTables.min.js');
  22. css::add('media/css/datatables.css');
  23. break;
  24. case 'edit':
  25. if(!uri::segment(4) || !is_numeric(uri::segment(4))) {
  26. //tu jeden redirect
  27. url::redirect('domyślne przekierowanie');
  28. }
  29. //ustawianie podstawowych parametrów
  30. break;
  31. default:
  32. //przekieruj wszystkie wywołania nie odpowiadające warunkom
  33. url::redirect('domyślne przekierowanie');
  34. }
Zwróć w przykładzie jednego z moich kodów jak mam rozwiązane to LUB. Posługuję się potem w bloku identycznego kodu dla wszystkich tylko uri::segment(3) decydując co wyświetlę (to akurat odpowiada za ustawienie klasy "active" dla wybranej zakładki). Oczywiście przy sprawdzaniu rozszerzonym helperem (valid::level) wcześniej, czy ma do tego prawo winksmiley.jpg
wookieb
  1. $keys1 = array('f1', 'f2', 'f3');
  2. $keys2 = array('t1', 't2', 't3');
  3.  
  4. switch(true)
  5. {
  6. case in_array($find, $keys1):
  7.  
  8.  
  9. break;
  10.  
  11. case in_array($find, $keys2):
  12.  
  13. break;
  14.  
  15. }
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.