Autor Zpráva
karel.n
Profil *
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;
  }
}
Kód pcmanika urobí presne to isté, čo ten môj. Myslel som ale, že mu nebudeš rozumieť, tak som to trochu rozviedol.

pcmanik:
Nemal by byť výraz $c == 1 ohraničený zátvorkami?
karel.n
Profil *
Děkuji mnohokrát, funguje! :)
pcmanik
Profil
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
pcmanik:
Skôr by som upozornil na to, že funkcia by mala vracať rovnaký dátovy typ
Prečo? Veľa predvolených funkcií predsa vracia niečo alebo false. Tak napríklad scandir(), fopen()...
karel.n
Profil *
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
karel.n:
není toto "špatně" zapsané?
Nemyslím (za predpokladu, že je to celé vo funkcii).
Alphard
Profil
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
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
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())) ...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: