Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Šta ovde ne valja?

[es] :: PHP :: PHP za početnike :: Šta ovde ne valja?
(Zaključana tema (lock), by dakipro)
Strane: < .. 1 2 3 4

[ Pregleda: 8256 | Odgovora: 62 ] > FB > Twit

Postavi temu

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

japan

Član broj: 34328
Poruke: 480
*.kbcnet.rs.



+13 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 15:13 - pre 141 meseci
pokušaću još jednom, pa odustajem... izvrši prvo ovo:
Code (php):

$var = 0;

switch ($var) {
    case ($var == 0) :
        echo "equals 0";
        break;
    case ($var == 3) :
        echo "equals 3";
        break;
    case ($var == 5) :
        echo "equals 5";
        break;
    default:
        echo "can't determine";
}
 


pa onda ovo:
Code (php):

$var = 0;

switch (true) {
    case ($var == 0) :
        echo "equals 0";
        break;
    case ($var == 3) :
        echo "equals 3";
        break;
    case ($var == 5) :
        echo "equals 5";
        break;
    default:
        echo "can't determine";
}
 

 
+1

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 15:15 - pre 141 meseci
Ama, neću da izvršavam.. :) :D te vežbičice, pliz.. :)

I reci mi, za šta će ti DEFAULT? case.. u ovom slučaju? :)

about:networking
 
0

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.adsl.verat.net.



+373 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 15:28 - pre 141 meseci
@plus_minus
Pogledaj primer:
Code (php):

$var = 0;

     switch($var) {

          case($var < 1):
               function2();
          break;
         
          case($var < 3):
               function3();
          break;
         
          case($var < 5):
               function4();
          break;

          default:
               function1(); break; //hocu da se izvrsi funkcija1() ako je $var 5 ili vece
         
     }
 

Ako je $var == 0 se nece ni jedan od ovih blokova izvrsiti sem defaulta. A ako uradimo kao sto si ti rekao (stavimo default blok ispred i ne stavimo break) izvrsice se i funkcija1 i funkcija2. A ako izbacimo default blok (kao sto si rekao) ne postoji case koji ce se izvristi sem ako namerno ne prosledimo false, tj ako se pravimo ludaci i napisemo ($var > 5). Onda ce se izvrsiti iako je $var zapravo 0 i nema smisla da se nesto izvrsi ako je netacno.
 
+3

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 15:38 - pre 141 meseci
Ok. Super, to je TAČNO. I ja to nisam ni poricao. Al' opet postavljam pitanje, na koje ne dobijam odgovor.

Zašto "default: .. " ?
Jel' znate da default nije moranje niti obavezno?

I zbog toga, ko meni ili tebi brani da upotrebimo switch/case varijantu onda kada za to ima potrebe i neće dolaziti do ovakvih situacija?
Navodno pokušavate nekome nešto da pojasnite i da uspešno pronađete bugove ili pros/cons i da idete tom filozofijom da je if else uvek bolje koristiti a da switch/case ne valja i nije dobro..

Takav utisak na kraju ove konverzacije može imati neko ko čitucka sa strane.
A takav utisak je pogrešan.

Ono što vi nikako da se setite jeste da postoji objašenjenje i za te stvari.

razlika između if/else i switch/case kontrolne strukture.

Lepo i piše, it is almost identical/similar as if/else i šta još?

Switch/case radi loose comparsion, kraj. Tabela. → http://www.php.net/manual/en/types.comparisons.php#types.comparisions-loose

E nakon toga, pojedinačno možemo da izvučemo logiku i da primenimo switch/case tamo gde treba ukoliko više pasuje od if/else.

Meni narod nešto da objasni.. lol.

"Ko je bolji i brži i jači, Switch/case ili if/elseif/else .. ? "

"e saću da vam pokažem." :p

Raiden Wins! Fatality!
Round 2, Sub-zero wins.. fatality...

E, na to liči ova diskusija.
about:networking
 
0

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.adsl.verat.net.



+373 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 15:52 - pre 141 meseci
Citat:
plus_minus:
@japan

Ukoliko staviš default: kao prvu stavku, hoće.
Reći će ti da je 0 manje od 1.


Samo sam ti naveo primer da to ne resava uvek problem.

Citat:
Zašto "default: .. " ?
Jel' znate da default nije moranje niti obavezno?

Dobro, nije obavezan. Hoce li moj primer raditi bez default? Hoce li izvrsiti funkcija2 jer je 0<1 ?

Citat:
Navodno pokušavate nekome nešto da pojasnite i da uspešno pronađete bugove ili pros/cons i da idete tom filozofijom da je if else uvek bolje koristiti a da switch/case ne valja i nije dobro..

Ja to nigde nisam rekao, rekao sam da ako ne koristis true kao switch() agrument moze doci do nepredvidivih rezultata jer si ti rekao:
Citat:

Međutim, ako imaš if(isset($_POST['something'])) .... pa onda planiraš da na toj i toj formi nadžidžaš jedno 20 i kusur uslova, provera .. hoćeš li if elseif elseif elseif..

ili switch($_POST['something']): .. ?

I šta je tu bolje i šta ne radi kako treba?
Sve radi kako treba ako ti postupaš logički ili pravilno.
Na sta sam ja zapravo hteo da ti ukazem da ako $_POST['something'] bude 0, switch/case nece raditi kako treba, i u situacijama kada imas potrebu da u case-u stavljas uslov treba uvek koristiti true kao switch argument. Nema razloga da radis ovako jer je identicno samo u tvom primeru mozes da prodjes kao bos po trnju ako promenljiva bude 0. To sam pokazao primerom kada se u case-u poziva funkcija za sta ne postoji resenje menjanjem pozicije default bloka

Citat:
Ono što vi nikako da se setite jeste da postoji objašenjenje i za te stvari.
Mi smo se setili objasnjenja i pokusavamo da ti objasnimo zasto paksa switch($var)/case (uslov) ne valja, ali ti odbijas da prihvatis.

Citat:
Meni narod nešto da objasni.. lol.
Argumentacija na nivou.
 
+2

Boyka
BPS

Član broj: 287185
Poruke: 338
*.dynamic.isp.telekom.rs.



+33 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 16:04 - pre 141 meseci
Citat:
plus_minus:
@Boykahttp://www.elitesecurity.org/p...64075?refresh=MTM0Njk0MTkzNw==

Ili uči engleski ili menjaj profesiju. Pauziraj sa svim što si naumio, nauči makar 30% engleskog jezika.
Imaš google translate, pa onda zaplavljuj, potom kopipejstuj i pamti.

Donekle možda i možeš da doguraš sa programiranjem bez engleskog, međutim,
jednog dana ćeš da dođeš do tačke, kada jednostavno nećeš moći dalje.

Misliš da će samo naši ljudi da imaju dovoljno dobre projekte za tebe, koje ćeš da praviš i eventualno naplatiš?
Kako ćeš da se sporazumevaš sa ljudima iz inostranstva kojima treba da se završi bilo kakav projekat?

Retko ko danas (mada ih ima) sedi u velikoj firmi kao php programer i prima platu, tad i tad u mesecu.
Većina web developera, jesu freelanceri i dubina džepa, uveliko zavisi i od - pogađaš, sporazumevanja (pored rada, logično).

A sve što je predefinisano u samom php-u, gomila klasa, konstruktora.. svi nazivi jesu kao i u svim drugim jezicima, na engleskom.


"Boyka, You must learn English or change profession. Stop with all things what you purposed, and try to learn at least 30% English language... Bolje čitam i govorim :)

Ja ne pišem o tome da ja ne znam Engleski, nego pišem da se ne može isto razumeti objašnjenje na Srpskom i na Engleskom jeziku...
 
0

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
..106.109.adsl.dyn.beotel.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 16:08 - pre 141 meseci
Videćeš da je posle par godina prakse lakše razumeti objašnjenje na engleskom, nego na srpskom (još ako je loš prevod, a 90% naše literature je prevedeno odvratnim bezličnim stilom) ;)
 
0

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 16:10 - pre 141 meseci
Citat:
plague: Argumentacija na nivou.


Na nivou. :)

Citat:
Mi smo se setili objasnjenja i pokusavamo da ti objasnimo zasto paksa switch($var)/case (uslov) ne valja, ali ti odbijas da prihvatis.


Ne želim, smatram drugačije. I smatram da se još niste ni dovoljno poigrali sa tim, te da niste ni kompetentni da dajete bilo kakve školske primere. Bilo kome.

My oh my.. One Zero is a big problem. And how to detect that?

I kako da detektuješ nulu a da ti kod bude - manji? Što više geekovski, jel' ?

@Boyka

Na prethodnoj strani..

Citat:
Sva objašnjenja su na Engleskom jeziku, a ja ne da ne znam Engleski, nego ga ne nekada ne mogu razumeti, u nekim situacijama jedva Srpska objašnjenja razumem a kamoli E.J. :)


A malopre..

Citat:
Ja ne pišem o tome da ja ne znam Engleski, nego pišem da se ne može isto razumeti objašnjenje na Srpskom i na Engleskom jeziku...


Sve u svemu, Boyka momče, ja ne pišem pomoću tastature, već je ovo što čitaš direktan izliv mastila iz nalivpera, ali vremena su takva kakva su, pa se to ipak može videti i na ekranu.

Ili znaš. Ili ne znaš. Bar kad je engleski u pitanju.

Ima i treća varijanta. A to je natucavanje nekog jezika.

A to što se tiče nerazumevanja objašnjenja, to nemoj da te plaši. Ponekad, neka zaista jesu zakukoljena.

[Ovu poruku je menjao plus_minus dana 06.09.2012. u 17:25 GMT+1]
about:networking
 
0

Boyka
BPS

Član broj: 287185
Poruke: 338
*.dynamic.isp.telekom.rs.



+33 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 16:20 - pre 141 meseci
Citat:
Burgos:
Videćeš da je posle par godina prakse lakše razumeti objašnjenje na engleskom, nego na srpskom (još ako je loš prevod, a 90% naše literature je prevedeno odvratnim bezličnim stilom) ;)


Pa to jeste sigurno :)
 
0

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.adsl.verat.net.



+373 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 16:29 - pre 141 meseci
Citat:
plus_minus:
Ne želim, smatram drugačije. I smatram da se još niste ni dovoljno poigrali sa tim, te da niste ni kompetentni da dajete bilo kakve školske primere. Bilo kome.
[Ovu poruku je menjao plus_minus dana 06.09.2012. u 17:21 GMT+1]

Ako smatras da je drugacije i da si u pravu, slobodan si da resis onaj primer koji sam dao i da mi pokazes. Resi moj primer (sa ili bez default) tako da ce raditi i u slucaju kada je $var = 0.
 
+1

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 17:29 - pre 141 meseci
Dodaj još jedan case(0) ili case($var==0): i radiće.
Ako već strepiš od nule.

Dakle, ne moraš ni case($var==int) već samo int

Eto, rešio sam ti tvoj čudnovati primer.

Sve i da nisam, ovaj sajt sam skoro završio. » magona.rs

I komplet sajt, tu gde može, gde sam zapravo ja lično smatrao da treba da koristim switch/case, koristio sam switch/case.
Jer switch metoda, ima svoju svrhu i lakše je mnoge stvari raditi uz takvu kontrolnu strukturu, hteo ti to sebi da dočaraš ili ne.. :)

Npr. /?prikaz=nasa_izdanja

Prikaz je konstanta zapravo, dobijam je iz same funkcije, postoji dakle jedna funkcija koja ispljuje to i još par definicija pride, dakle nešto ovako..

Code (php):


define("prikaz", filter_input(INPUT_GET, 'prikaz', FILTER_SANITIZE_STRING));

 


I kasnije, na glavnoj prekretnici..

Code (php):


switch( prikaz ){

case($pageAr[1]): /* execute something here ...  */  require_once _lang .$pageAr[1].'.php'; break;
case($pageAr[2]): /* execute ... or not, whatever.. */ require_once _lang .$pageAr[2].'.php'; break;
# itd.. itd..
}

 


Kao što sam pomenuo, svaki od tih prekidača, radi kako treba, obavlja sve kako sam i zamislio, i ne samo to, switch( prikaz ): se ponavlja više puta na više različitih mesta. Jedan je samo za dinamički css drugi je za sami html. I validacija prilikom registracije, pa i login-a.. ide kroz switch case.

Taj problem koji ti pokušavaš uporno da ilustruješ, a nema potrebe, jer ti verujemo, majke nam, se prevazilazi veoma lako i zaista nema potrebe osvrtati se na te stvari.

Slučaj da li je promenjiva možda numerička ili čist integer? Ili na kraju krajeva jedna obična Nula?
Kada neko ukuca nulu na poljiima za unos imena ili lozinke, samo nulu dakle, tretira se kao NULL. I to - ne prolazi. To se i ispisuje.
Prazno polje. Jer nula i jeste ništa. Al' to » ništa « ne može da prođe. Izađe poruka na ekranu koja detaljiše o tom i tom polju.

Sad, ko želi, neka upisuje nule dokle god hoće, ja šta da mu radim? :)

A mogu čas posla da izmenim tu definiciju za poruku i da piše samo - Greška! Nepravilan unos.
Jer, nula se u ovom mom slučaju tretira kao NULL ili case(empty($inputField))

Isto mu dođe.


about:networking
 
0

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
..106.109.adsl.dyn.beotel.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 17:39 - pre 141 meseci
Očigledno je da u ovom primeru koristiš switch kako bi trebalo, a ne kako si propovedao dve stranice unazad.
 
0

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 17:51 - pre 141 meseci
Ajde ne izigravaj sada da ne kažem šta.. "propovedao".

Svašta.
about:networking
 
0

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.adsl.verat.net.



+373 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 19:08 - pre 141 meseci
U tvom primeru nigde ne vidim da si koristio case(logicka_operacija), a to je sustina o kojoj pricamo.
Citat:
Dodaj još jedan case(0) ili case($var==0): i radiće.
Ako već strepiš od nule.

E vidis, odmah si napravio gresku jer neces da procitas uopste lepo ono sto mi pricamo. Slucaj: case($var==0) nece raditi kada je $var = 0.

Dalje, pricali smo o tome da se u case stavlja logicka operacija, a ne konkretna brojna/slovna vrednost, zar ne? Prvo sto si napisao ( case(0) ) ce raditi, to uopste nije problem nikada jer je to onda najobicniji switch/case primer.

Sta ces raditi ako imas slucaje kada: case ($var < $varX) i kada ne znas koji ce slucaj zapravo obuhvatiti nulu? Posto tvoje resenje se svodi na dodavanje "case : 0" tamo gde treba, a ako ne znas gde treba nego je to dinamicki odredjeno?

Code (php):

$var = 0;
$var2 = $_POST['txt1']; //npr -5
$var3 = $_POST['txt2']; //npr 5
//...
$varN = $_POST['txtN'];

switch($var) {

     case ($var < $var2): // (0 < -5) ne bi trebalo da se izvrsi. Ne sme biti prvo jer ce se desiti: 0 == (0 < -5) sledi: 0 == (false) sledi: false == false sledi: izvrsice se.
          f1();
          break;
     case ($var < $var3): // (0 < 5) -> treba da se izvrsi, znaci moramo da dodamo "case : 0" tu, i da stavimo na prvo mesto.
          f2();
          break;
     //....
     case ($var < $varN)
          fN();
          break;   

     default:
          f0();
          break;
         
}
 
?>
 


Gde ces ovde prisiti case : 0 kada moze da se izvrsi ili f1(), ili f2()...ili fN() ili nijedan(default ako postoji)?
Moja poenta je: takva praksa ce stvoriti probleme jer uvodis jos jednu promenljivu bespotrebno u jednacinu. Ovde da stoji switch(true) ne bi ni trepnuo.

Citat:
I komplet sajt, tu gde može, gde sam zapravo ja lično smatrao da treba da koristim switch/case, koristio sam switch/case.
Jer switch metoda, ima svoju svrhu i lakše je mnoge stvari raditi uz takvu kontrolnu strukturu, hteo ti to sebi da dočaraš ili ne.. :)

Switch/case je super, volim, koristim to, radim sve sto rade mladi. O tome nije rec uopste, niti je to receno. :]
 
0

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 19:28 - pre 141 meseci
Citat:
plague:
...
E vidis, odmah si napravio gresku jer neces da procitas uopste lepo ono sto mi pricamo.


Pa ne čitaš ni ti, zato nemoj da popuješ više, evo, boldovano i citirano.

Citat:
Eto, rešio sam ti tvoj čudnovati primer.

Sve i da nisam, ovaj sajt sam skoro završio.


Poenta priče je da smarate više sa tim.

I šta ću raditi ako je ovo ili ako je ono?

Pa uzeću možda u obzir nešto drugo osim switch/case, a?

Na kraju krajeva, ja i jesam taj koji u ovoj temi govori da su obe varijante podjednako dobre u zavisnosti od slučaja.

Dok se pojedinci hvataju za jedan od bug-ova u php-u (php ima mnogo više od samog jednog bug-a, čisto da te podsetim) ili neočekivanih rezultata.

Ne znam zašto je dalja diskusija oko ovoga uopšte potrebna.

about:networking
 
0

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.65.192.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 19:49 - pre 141 meseci
Zato što će nekada neko da pročita to što si napisao i da upotrebi negde.
 
+1

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 20:15 - pre 141 meseci
A šta će neko odavde konkretno da upotrebi?

Pre svega, na stranici broj 2, postavljeno je pitanje s' moje strane, "Jesi li siguran da ovako nešto nije validno za switch?"

Pa je onda dat primer, mali, koji - RADI. I koji jeste validan.

E, onda je došlo do zaključka da ima problema da se detektuje nula kroz upoređivanje vrednosti, sa switch/case metodom.

Sa (ne mojim) zaključkom da switch/case metoda, maltene (po vama) ne treba ni da postoji..

Da vidimo tu famoznu nulu šta će da radi, ako sam baš odlučio da dobar deo proturim kroz -prekidač- ..

Code (php):


if($var==0) $result='Nothing or ZERO is not allowed';
else
switch($var):

case($var < 2 ): # ..... jel' mora baš jedinica? :)))
break;

#itd, itd..
endswitch;

 


I tvoj problem na koji uporno ukazuješ, postao - ništa.

Ahaaa.. čekaj.. pa ja sam sada nepravedan igrač...

Iskoristio sam IF !!!
Ajoj, a tu je i else.. ccc.

[sarc] to mora da se sanira, mnogo je to koda. Može sve to u jednoj liniji, tako je modernije. ;) Mislim, ko će pa da piše toliko.. do kraja života.. [/sarc]
(Tako je. Tu je i jedno i drugo u kombinaciji, što ne umanjuje upotrebljivost i jednog a i drugog načina, tamo gde je zgodno, i evo.. peti ili šesti put to navodim .. )

Mislim, ajde da mi lepo i čitko objasniš zašto ovo uvek i uvek daje error.
I to "fat and juicy one" - error.

Code (php):


     define("_word__",
     'I am not an empty constant!');
     
     (empty( _word__)) ?
     echo 'Impossible!' :
     echo 'Definitely impossible. :S';

 


Da vidimo, šta ovde ne valja?

about:networking
 
0

japan

Član broj: 34328
Poruke: 480
*.kbcnet.rs.



+13 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 20:35 - pre 141 meseci
Ne valja to što si suviše sujetan da bi priznao da nešto radiš kako treba.
 
0

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 20:38 - pre 141 meseci
Misliš da nešto NE radim kako treba? To si hteo da kažeš?

Bez obzira, to i nije tema diskusije.

:)
about:networking
 
0

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.65.192.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Šta ovde ne valja?06.09.2012. u 20:54 - pre 141 meseci
Niko nije rekao da ne treba switch da postoji i da se ne upotrebljava, i to baš onako kako si pokazao da ga koristiš u praksi. Niko tebe ne uči da programiraš ovde, niti verovatno neko ima nameru da to radi nakon viđenja tvog stava koji je ravan nekim neobrazovanim i zatucanim ribolovcima. Moja namera je da pokažem momku koji je pokrenuo temu zašto to ne treba tako da radi.
 
0

[es] :: PHP :: PHP za početnike :: Šta ovde ne valja?
(Zaključana tema (lock), by dakipro)
Strane: < .. 1 2 3 4

[ Pregleda: 8256 | Odgovora: 62 ] > FB > Twit

Postavi temu

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.