Autor Zpráva
Anonymní
Profil *
jak zjistit jestly existuje proměnná X?

if(existuje proměnná X?) {
příkazy prováděné při splnění podmínky;
}
else {
příkazy prováděné při nesplnění podmínky;
}
flying gentleman
Profil
if(isset(x)){splneno}
else{nesplneno}

takhle ne?
Thorai
Profil *
jednodušší asi bude:

if ($x) { příkazy prováděné při splnění podmínky; }
else { příkazy prováděné při nesplnění podmínky; }
thingwath
Profil
Thorai

Je to sice asi jednodušší, ale pokud se nepletu, vypisovalo by to chybu.
Tomik
Profil
Nemělo by, pokud proměnná něco obsahuje vrací true, pokud neobsahuje vrací false. Ale IMHO je jistější používat isset...
thingwath
Profil
V nějakém novějším PHP to bude IIRC vypisovat varování (dá se samozřejmě potlačit). isset by mělo být jistější a čistší.
Leo
Profil
if ($x)...

A zkousel jste to pro vsechny HODNOTY $x? Leo
Tomik
Profil
Mám na serveru PHP 5.0.4 (nejnovější verze) a chybu to nehlásí, ale je pravda, že to záleží na nastavení PHP (konkrétně IMHO na nastavení error_reporting).
thingwath
Profil
$x = 0;

:-)
Tomik
Profil
To Leo: Ano, podmínka vrací true v případě, že je v proměnné $x uložen: interger, double, string, pole, ale i objekt, překvapivě i u hodnoty "true" vrací podmínka true, a v případě "false" false... :D
Tomik
Profil
To thingwath: Hmm, na na nulku jsem zapoměl... :)
thingwath
Profil
Programoval si někdy v céčku? ;-)
Leo
Profil
A co

$x = "";

Leo
thingwath
Profil
Vidíš, řetěze v céčku se ukončují nulou, takže "" je vlastně taky jenom nula :-)
HubiPe
Profil *
Ale jestli-že $x nebude deklarovaná, a bude zkoušena if($x){} else {} a je nastaveno error_reporting(E_ALL) (mělo by se to nastavovat vždy při vývoji softwaru a pro ostré fungování by se mělo vypnout [error_reporting(0)]) vypíše to varování. Nejlepší je použít toto:

if(!IsSet($x)) $x = false; // nebo cokoliv jiného
if($x):
else:
endif;
krteczek
Profil
já používám ve většině případů tohle:

if(empty($x))
{
//neco
}
else
{
//neco jiného
}

krteczek
díky za upozornění, ano emty je můj častý překlep správně má být empty, je to opraveno :-)
a ano testuji tím právě jestli je formulář odeslán vyplněn nebo ne, u isset mi to házelo chybu ( nevím už jakou ), takže jsem začal používat empty. na domácím kompu mám výpis všech chyb i varování. a pokud je to bez chyb tak to hodím na test hosting...
krteczek
pitomec
Profil *
krteczek: to je nejlepsi
Charlie
Profil
krteczek, mas tam chybu, je to empty().

Myslim, ze nejlepsi reseni, zda zjistit existenci promenne je prave funkce isset, pokud jsou v PHP povoleny vsechny chyby vcetne notice, tak by podle meho vyhazovalo chybu i empty(), isset() chybu nevyhodi.
thingwath
Profil
Empty není to správné. Zjištuje, jestliv proměnné něco je. Pokud ano, vrátí false. Pokud ovšem v proměnné nic není, vrátí true. Hezký příklad:

http://www.blueshoes.org/en/developer/php_cheat_sheet/
Charlie
Profil
Ono taky zalezi na tom, na co chcete tuto podminku pouzit. Je rozdil, pokud chcete zjistit pouze existenci, nehlede na obsah, nebo pokud potrebujete, aby promenna nebyla prazdna, atd. atd.
juneau
Profil
proto pouzivam vicemene pouze if (!empty($x)) {...} (pokud neni prazdne $x, tak...) ... empty/isset potlaci chybove hlaseni, pokud promenna neexistuje (nebyla inicializovana) a takhle mam i jistotu, ze obsahuje nejakou hodnotu. takze to resi pripad, kdy mi nekdo odesle prazdny formular a pod... promenne jsou vytvorene, ale prazdne.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0