Autor | Zpráva | ||
---|---|---|---|
youkon Profil * |
#1 · Zasláno: 14. 9. 2008, 23:54:52
Ahoj, nevíte proč se to děje?
Mám nějakou funkci, např. function overData ($prvni = false, $druha = false, $treti) { if(isset($prvni)) return 'je tam prvni!'; if(isset($treti)) return 'je tam treti!'; } a zavolám si funkci takhle: echo overData(false, false, 'neco tam bude'); Vypíše to kromě je tam treti!, což se očekává, i je tam prvni! jak to, když to je false, tedy testuju to na isset a nemělo by tam tedy být? Když ve funkci zaměním if(isset($prvni)) if($prvni) if($prvni != false) |
||
Timy Profil |
#2 · Zasláno: 15. 9. 2008, 00:02:58
youkon
„false je taky hodnota?“ Ano :-). |
||
youkon Profil * |
hmm, takže předělat celej server :( dřív to ale bralo, že když false, tak nic, až nová verze php
|
||
BetaCam Profil |
#4 · Zasláno: 15. 9. 2008, 00:48:08 · Upravil/a: BetaCam
youkon
No máš dost možností mě ted napadaj dvě : bud místo isset() dát empty() nebo místo FALSE posílat NULL |
||
youkon Profil * |
#5 · Zasláno: 15. 9. 2008, 16:56:33
díky, null vypadá dobře
|
||
Warden Profil |
#6 · Zasláno: 17. 9. 2008, 10:31:46
isset() kontroluje pouze, zda je proměnná inicializovaná, což je jako formální parametr funkce, to, že má hodnotu false, isset() nezajímá
|
||
BetaCam Profil |
#7 · Zasláno: 17. 9. 2008, 10:44:01
Warden
„isset() kontroluje pouze, zda je proměnná inicializovaná, což je jako formální parametr funkce, to, že má hodnotu false, isset() nezajímá“ Naopak FALSE ji zajímá, ale NULL jí nechává ledově klidnou :) |
||
Warden Profil |
#8 · Zasláno: 17. 9. 2008, 11:07:59 · Upravil/a: Warden
To je otázka, jak se na problém díváme :-) Kdybych ji neinicializoval na false, tak se inicializuje náhodnou hodnotou a isset se vyhodnotí jako true pokaždé. isset() by se vyhodnotila jako false, pokud by proměnná nebyla nikde definována. Tim, že jí přiřadím hodnotu null jí nastavuji jako neplatnou, proto se isset() chová tak, jak potřebujeme :-) Každopádně problém je vyřešen a není třeba se rozepisovat :-)
Ještě dodám, to, že je v proměnné false, ji opravdu nezajímá...může v ní být false, true, 0, 1, "blablabla", nebo cokoliv jiného a podmínka bude bude vždy vyhodnocena jako true, protože isste() neřeší obsah, ale "existenci" :-) |
||
Mastodont Profil |
#9 · Zasláno: 17. 9. 2008, 11:13:11
|
||
Časová prodleva: 16 let
|
0