Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SWITCH] operator ||
TheArt
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 20.09.2007

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


Czy prawidłowym jest zapis

  1. case 'oferta' || 'produkty' || 'sklepy' :
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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

Ale oczywiście mogłeś to sprawdzić...

Ten post edytował wookieb 5.01.2010, 00:08:54


--------------------
Go to the top of the page
+Quote Post
TheArt
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 20.09.2007

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


właśnie dziwiłem się że operator || nie działa, jak inaczej to zrobić żeby nie pisać setek linii kodu
Go to the top of the page
+Quote Post
Meares
post
Post #4





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


Zabijecie mnie za to - użyj ifów. smile.gif


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


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.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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

Ten post edytował thek 5.01.2010, 09:36:00


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  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. }


--------------------
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 Aktualny czas: 19.08.2025 - 16:18