![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Witam. Mam taki oto switch:
I PHP wyrzuca mi błąd: Cytat Error type: Notice error Error message: Undefined index: number Przecież to bez sensu, po to jest default, aby w przypadku nie istnienia zmiennej number wyświetlić ustalony tekst... Co Wy na to? Pozdrawiam, ladovnik Ten post edytował ladovnik 3.03.2009, 20:18:03 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 781 Pomógł: 256 Dołączył: 29.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Od sprawdzenia czy zmienna istnieje jest isset" title="Zobacz w manualu PHP" target="_manual a defalut jest od tego by wyświetlić domyślny tekst w przypadku nie spełniania się żadnego z warunków
Ten post edytował kefirek 3.03.2009, 20:24:15 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Generalnie tak, ale robienie:
Jest dość niewygodne... Wtedy już lepiej robić:
I w takiej sytuacji funkcja switch dla zmiennych GET staje się nieużyteczna (jeśli chcemy mieć poprawnie napisany skrypt)... Ten post edytował ladovnik 3.03.2009, 20:26:39 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
daj na poczatku kodu
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
I w takiej sytuacji funkcja switch dla zmiennych GET staje się nieużyteczna (jeśli chcemy mieć poprawnie napisany skrypt)... Wszystko jest bezużyteczne jeśli nie potrafisz się tym sprawnie posługiwać. Podobnie jest i w tym przypadku. Pomimo, że kefirek świetnie wyjaśnił ci różnicę między isset a default to ty nadal upierasz się przy swoim. Twój kod będzie rzucał notice'ami z racji twojego niedbalstwa, a nie przez "bugi" w instrukcji switch-case. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Bełdzio, ja celowo włączyłem pokazywanie błędów E_NOTICE, bo chcę mieć skrypt 100% zgodny... Co do wypowiedzi phpion, przecież zrozumiałem różnicę pomiędzy isset a default.. co też zaprezentowałem w swoim przykładzie, w moim drugim poście. Przecież innej metody nie ma, poza tymi dwoma, przedstawionymi przez mnie w drugim poście. Jeśli się mylę - proszę mnie poprawić.
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Cóż, wybacz phpion, nie pomyślałem o takim rozwiązaniu.
Pozdrawiam, ladovnik |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
a defalut jest od tego by wyświetlić domyślny tekst w przypadku nie spełniania się żadnego z warunków A dafault służy do wykonania się zawsze. A to czy inne warunki się spełniły nie ma nic do rzeczy. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 25 Dołączył: 6.09.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A dafault służy do wykonania się zawsze. A to czy inne warunki się spełniły nie ma nic do rzeczy. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Chyba czytaliśmy inne manuale: Cytat A special case is the default case. This case matches anything that wasn't matched by the other cases. switch
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tylko w przypadku, gdy wewnątrz switcha przed default zostanie wykonane break" title="Zobacz w manualu PHP" target="_manual.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 25 Dołączył: 6.09.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tylko w przypadku, gdy wewnątrz switcha przed default zostanie wykonane break" title="Zobacz w manualu PHP" target="_manual. Oczywiście masz rację, ale nie zmienia to faktu, że w opisie instrukcji switch kończenie break-iem bloku instrukcji po case przedstawione jest jako zachowanie domyślne. Pominięcie break'a i zezwolenie na wykonanie bloków instrukcji przypisanych do kilku case'ów i/lub defaulta jest z założenia celowym i świadomym zabiegiem programisty. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat przedstawione jest jako zachowanie domyślne Wiem, że się czepiam, ale: nie jest to domyślne zachowanie, bo jeżeli takowe by było, to w kodzie zapewne break by się pomijało, a stosowało inne słowo kluczowe do "kontynuowania". Nie zmienia to faktu, że jest to bardzo popularne zachowanie.Cytat jest z założenia celowym i świadomym zabiegiem programisty Podobnie jak celowym założeniem programisty powinna być wiedza na temat tego co się pisze, a nie używa breaka "bo tak w manualu napisali". (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Koniec OTa |
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@Crozin nie dość ze sie czepiasz to jeszcze dziwne rzeczy wygadujesz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
default wykona sie zawsze jesli nie podamy nigdzie break. Ale tak samo wykona sie kazdy inny case jesli weszlo sie do case wczesniej i nie dalo sie break. default zachowuje sie tu tak samo jak normalny case. default to taki else z if. wykona sie wtedy, gdy nie spelnionone są inne warunki. Mieszanie w to ideologii z break mija się z celem, a juz tym bardziej mija sie z celem mowienie komus ze gada bzdury bo uzywa niby bezmyslnie to co napisali w manualu. piaseq dobrze zrozumial manuala i dobrze uzywa to co tam napisali. break sluzy do niewykonywania instrukcji z innych case'ów (w tym i default). z reguły tak robimy najczęściej. Zdarzają sie jednak sytuacje, gdy chcemy by dane instrukcje wykonaly sie dla kilku case i wowczas nie dajemy break. I jak napisal piaseq jest to celowym i swiadomym działaniem programisty porownówam troche twoj tekst o tym ze default wykonuje sie zawsze, no chyba ze damy break, do takich tekstów: samochod moze jechac bez konca i bez postojów, no chyba ze mu sie skonczy paliwo swiatlo w lodówce pali się zawsze, no chyba ze zamkniemy lodówke (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat default wykona sie zawsze jesli nie podamy nigdzie break. Ale tak samo wykona sie kazdy inny case jesli weszlo sie do case wczesniej i nie dalo sie break. default zachowuje sie tu tak samo jak normalny case. No przecież nie napisałem, że tak nie jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Przyczepiłem się do Cytat a defalut jest od tego by wyświetlić domyślny tekst w przypadku nie spełniania się żadnego z warunków Co nie jest do końca zgodne z prawdą.Fakt, faktem - break w parze z case(ami) używa się nieporównanie częściej niż bez nich, a default przymuje rolę wspomnianego else, ale nie można napisać tak jak kefirek |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 23:21 |