Autor Zpráva
marek187
Profil
if(empty($test1 || $test2  || $test3 || $test4))

Táto funkcia empty() mi v podmienke funguje presne ako potrebujem... je to ale valídny/správny zápis?
Martin2
Profil *
marek187:
je to ale valídny/správny zápis?
Ne. Logické operace se provedou jako první. A skončí chybou v případě neexistence některé z těch proměnných. Funkce empty je tady úplně zbytečná.
marek187
Profil
Martin2:
Ne. Logické operace se provedou jako první. A skončí chybou v případě neexistence některé z těch proměnných. Funkce empty je tady úplně zbytečná.
Ako je teda možné, že to funguje pri tomto zápise bezchybne?

if(empty($test1) || empty($test2) || empty($test3) || empty($test4))
Tento zápis je lepši?
Fisir
Profil
Reaguji na marka187:
Ten druhý zápis dělá něco jiného a je, na rozdíl od toho prvního, logicky správný.
marek187
Profil
Fisir:
Ten druhý zápis dělá něco jiného a je, na rozdíl od toho prvního, logicky správný.
Takže hoci mi to server spracuje pri oboch zápisoch rovnako, prvý neni z logického hladiska správny?
Martin2
Profil *
marek187:
Takže hoci mi to server spracuje pri oboch zápisoch rovnako
Nezpracuje je stejně. Operace proběhnou v jiném pořadí. Nevím, proč používáš empty, ale evidentně ne na to, pro co je určena – k zachycení false nebo not-set hodnoty. Ty v prvním případě využíváš jen detekci false, not-set skončí chybou.
marek187
Profil
Martin2:
Nezpracuje je stejně. Operace proběhnou v jiném pořadí. Nevím, proč používáš empty, ale evidentně ne na to, pro co je určena – k zachycení false nebo not-set hodnoty. Ty v prvním případě využíváš jen detekci false, not-set skončí chybou.
Používam to v prvom rade preto, lebo to spĺňa účel a je to kratší/jednoduchší zápis... nakoľko mi funkcia empty() posudzuje naraz až 10 premenných a stačí ak len jedna nie je prázdna... potom má platiť podmienka... takže týmto spôsobom detegujem iba false, môže to v tomto prípade nejak ovplyvňovať chybný not-set?
Martin2
Profil *
marek187:
a stačí ak len jedna nie je prázdna... potom má platiť podmienka
Ne. Podmínka [#1] je splněna, když všechny proměnné při převodu na boolean skončí jako false. Pak je i výsledná disjunkce false a funkce empty vrátí true.

Stejný výsledek tedy obstará i prostá negace. Funkce empty tu neplní žádnou roli.
if(!($test1 || $test2 || $test3 || $test4))

Poradil bych ti studium základů PHP, ale tohle je spíš věc asi 4. třídy základní školy. Tam se přibližně vysvětluje, v jakém pořadí se vyhodnocují závorky (zevnitř směrem ven).
marek187
Profil
Martin2:
Mne tu nešlo o riešenie zátvoriek, ale v každom prípade ďakujem za ochotu a vysvetlenie... a ten kurz PHP určite zvážim, nakoľko som zatiaľ len samouk.

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: