Autor | Zpráva | ||
---|---|---|---|
karel.n Profil * |
#1 · Zasláno: 4. 4. 2015, 16:53:42
Dobrý den, měl bych na vás prosbu o pomoc. Napsal jen níže velmi stručně funkci a chtěl, aby pokud bude splněná podmínka $c == 1, tak aby funkce vracela proměnnou $a a pokud podmínka nebude splněna, tak aby vracela false. Je tohle nějak možné a pomohli byste mi prosím?
Děkuji function bla() { if($c==1) { } return $a; } |
||
pcmanik Profil |
karel.n:
return $c == 1 ? $a : false; |
||
Tomáš123 Profil |
karel.n:
„Je tohle nějak možné a pomohli byste mi prosím?“ Áno je. Premenná $a ale musí byť niekde definovaná.
function bla() { if($c==1) { return $a; } else { return false; } } pcmanik: Nemal by byť výraz $c == 1 ohraničený zátvorkami?
|
||
karel.n Profil * |
#4 · Zasláno: 4. 4. 2015, 17:19:19
Děkuji mnohokrát, funguje! :)
|
||
pcmanik Profil |
#5 · Zasláno: 4. 4. 2015, 17:42:49
Tomáš123:
Nemusí byť ohraničený a príde mi to tak prehľadnejšie preto to už dlhšiu dobu tak používam. Skôr by som upozornil na to, že funkcia by mala vracať rovnaký dátovy typ takže v tomto prípade true/false alebo teda 1/0 pre int. |
||
Tomáš123 Profil |
|||
karel.n Profil * |
#7 · Zasláno: 4. 4. 2015, 17:59:00
chtěl bych se ještě zeptat, jak ej to s tím datovým typem, není toto "špatně" zapsané?
$name = "fotka"; return (@move_uploaded_file($_FILES['upload']['tmp_name'], $file)) ? $name : false; |
||
Tomáš123 Profil |
#8 · Zasláno: 4. 4. 2015, 18:02:48
karel.n:
„není toto "špatně" zapsané?“ Nemyslím (za predpokladu, že je to celé vo funkcii). |
||
Alphard Profil |
#9 · Zasláno: 4. 4. 2015, 18:04:04
pcmanik:
„že funkcia by mala vracať rovnaký dátovy typ takže v tomto prípade true/false alebo teda 1/0 pre int“ To je dost sporné tvrzení. Když přijmeme ten předpoklad, že by se měl vracet vždy stejný datový typ (což v PHP není nutné), může to znamenat značné komplikace, protože pak neodlišíme různé stavy (pokud $a může být 0). Řešením je buď rozdělit kód do více funkcí, nebo vyhozovat výjimky.
Tomáš123: „Prečo? Veľa predvolených funkcií predsa vracia niečo alebo false . Tak napríklad scandir(), fopen() ...“
Třeba v C je to nutností a je řekl bych dobrým zvykem, aby chování funkce bylo pokud možno konzistentní, aby nevracela každou chvíli něco úplně jiného. Vrácení false bych ale rozumně viděl jako výjimku z tohoto pravidla.
Funkce, které uvádíš, se mi nezdají jako ideální případ, ty vracejí false při selhání a ještě k tomu generují nějaké warningy, tam by bylo ideální vyhodit výjimku. Jako lepší příklad se mi zdá strpos(), která vrací buď index, nebo false při nenalezení (což není selhání, jde o validní výsledek funkce).
karel.n [#7]: Nevidím v tom problém. |
||
Tomáš123 Profil |
#10 · Zasláno: 4. 4. 2015, 18:18:20
Alphard:
Ďakujem za informáciu „Nevidím v tom problém.“ Takže to nemusí byť obalené funkciou? V manuáli sa píše o rôznej interpretácii tejto jazykovej konštrukcie v závislosti na pozícii. Ak som to správne pochopil, tak v prípade, že sa súbor neincluduje (prípadne nerequieruje) alebo nie je súčasťou funkcie, skript sa okamžite ukončí. Myslím, že ani jedna z týchto situácií nie je prípadom karla.n. Pouč ma prosím. |
||
Alphard Profil |
#11 · Zasláno: 4. 4. 2015, 18:25:01
Tomáš123 [#10]:
return předává hodnotu volajícímu, vzhledem k původnímu dotazu předpokládám, že to ve funkci je a dotaz byl mířen směrem, že někdy se vrátí false a někdy string.
Použití je potom cca takovéto if (false !== ($name = upload())) ... |
||
Časová prodleva: 10 let
|
0