Autor | Zpráva | ||
---|---|---|---|
Milan1236000 Profil |
Zdravím,
je nějaký rozdíl mezi $promenna=1; if($promenna==1) echo "1"; else echo "0"; $promenna="1"; if($promenna=="1") echo "1"; else echo "0"; $promenna="1"; if($promenna==1) echo "1"; else echo "0"; $promenna=1; if($promenna=="1") echo "1"; else echo "0"; |
||
lionel messi Profil |
Milan1236000:
Z hľadiska výsledku nie. Operácie prebiehajú takto: 1. prípad: Porovnávaš int s int, nič nečakané sa nedeje. 2. prípad: Porovnávaš string so stringom, nič nečakané sa nedeje. (rovnaké dátové typy). 3. prípad: Porovnávaš string s int, ale jednotka na pravej strane operátora == sa automaticky pretypuje na string. 4. prípad: Takisto ako 3. prípad, len jednotka sa pretypuje na int. Pokiaľ chceš zároveň s hodnotou porovnať aj typ, použi operátor === .
Porovnaj: $promenna=1; if($promenna=="1") echo "1"; else echo "0"; //vypíše 1 verzus $promenna=1; if($promenna==="1") echo "1"; else echo "0"; //vypíše 0 Niekedy býva žiaduce použiť operátor === pretože potrebuješ napríklad odlíšiť int a boolean (napr. 0 a false).
Pozri sa na funkciu strpos, ktorá vracia 0, ak bol podreťazec nájdený na začiatku reťazca a false, ak nebol nájdený vôbec. Keby si v podmienke pracujúcej s výsledkom tejto funkcie použil == , nevedel by si tieto dva prípady od seba odlíšiť (všimni si tiež varovanie v manuáli).
Ohľadne prípadov 3 a 4 vyššie z [#1] si nie som istý, v akom poradí presne prebieha pretypovanie (či sa v skutočnosti pretypuje výraz na pravej alebo ľavej strane porovnania), pre účely jednoduchého vysvetlenia to nevadí, ak sa náhodou mýlim, ospravedlňujem sa. Prosím skúsenejších kolegov o prípadnú korekciu. |
||
_es Profil |
#3 · Zasláno: 24. 2. 2016, 22:49:32
Milan1236000:
V dokumentácii PHP máš rôzne porovnávacie operátory vysvetlené: secure.php.net/manual/en/language.operators.comparison.php - určite je k tomu niekde aj niečo v češtine. Okrem operátora == existuje aj operátor === .
|
||
Milan1236000 Profil |
#4 · Zasláno: 24. 2. 2016, 23:07:40
Jasně, díky.
|
||
Časová prodleva: 9 let
|
0