Autor | Zpráva | ||
---|---|---|---|
kiksl Profil * |
#1 · Zasláno: 17. 5. 2015, 20:18:55
je lepší
if($promena=="")... nebo if(!$promena)... |
||
juriad Profil |
To první předpokládá, že proměnná obsahuje řetězec.
To druhé předpokládá, že proměnná obsahuje logickou hodnotu. A samozřejmě, že kvůli php.net/manual/en/language.types.type-juggling.php a php.net/manual/en/types.comparisons.php projde skoro vše. Ale není dobrou praxí na to spoléhat. To, že v PHP lze programovat jako prase neznamená, že se to tak má dělat. Když proměnná obsahuje číslo 0 nebo dokonce řetězec "0", tak první podmínka neprojde, druhá ano. Joker, díky za opravu. V každém případě není to zcela intuitivní a není dobré na to spoléhat, protože se v tom snadno udělá chyba. Jsem důkazem. |
||
Joker Profil |
#3 · Zasláno: 17. 5. 2015, 23:26:41
kiksl:
Ani jedno není lepší, to je asi jako otázka, jestli je lepší if ($promenna == 2) nebo if ($promenna == 3) .
To první kontroluje, zda v $promenna je prázdný řetězec, nebo ekvivalentní hodnota jiného datového typu. To druhé kontroluje, zda v $promenna je false , přičemž hodnota v $promenna není typu boolean, nejdřív se konvertuje.
juriad: „Když proměnná obsahuje číslo 0 nebo dokonce řetězec "0", tak první podmínka neprojde, druhá ano.“ Jen poopravím, jediný rozdíl je řetězec "0", číslo 0 projde i tou první. |
||
snazimse Profil |
#4 · Zasláno: 18. 5. 2015, 00:39:11 · Upravil/a: Moderátor (editace znemožněna) 18. 5. 2015, 08:04:09
Joker:
„Jen poopravím, jediný rozdíl je řetězec "0", číslo 0 projde i tou první.“ Moderátor Joker: Nahradil jsem [>pre] za normální citaci
Tak to je trochu šílenost ne? Ikdyž kdybych to chtěl někde uložit do string formátu, tak se to možná hodí, ale dělá to asi trochu nepořádek. |
||
Amunak Profil |
snazimse:
Šílenost to je, ale díky přetypování to tak funguje. Ostatně taky proto je vhodné vždy používat "identitu", tedy === místo ==. Podmínku bez operátoru, tedy jen if($promenna) je vhodné používat jen tehdy, kdy je $promenna striktně typu boolean.
Pro všechny ostatní případy jde použít nějaké jiné, vhodnější a čitelnější porovnání. |
||
snazimse Profil |
#6 · Zasláno: 18. 5. 2015, 02:24:19
Souhlasím, proto právě, by to mělo fungovat pouze jen s operátorem
=== Když tedy chci porovnávat více datových typů.
|
||
Joker Profil |
#7 · Zasláno: 18. 5. 2015, 08:06:46
|
||
Časová prodleva: 9 let
|
0