21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Peet
Profil
Dobrý den,

používám tuto zkrácenou podmínku pro testování isset() a dlouho jsem byl spokojen, ale nyní jsem zjistil, že vrátí null IKDYŽ je hodnota rovna 0

@$var ?: null;

měl jsem za to, že zavináč zasupuje isset.. ale není tomu tak. Neví někdo jak bych mohl podmínku upravit aby byla opravdu isset, ale aby byla takto zkrácená ?

isset($var) ? $var : null;

je moc dlouhé, díky :)
Taps
Profil
Peet:
@ nezastupuje isset. Pomocí @ potlačuješ chybové hlášky, která se může vyskytnout

Níže uvedený zápis by měl korektně fungovat
<?
isset($var) ? $var : null;
?>
Joker
Profil
Peet:
nyní jsem zjistil, že vrátí null IKDYŽ je hodnota rovna 0
Pro úplnost ještě dodám, že:
1. Operátor zavináče (potlačení chybových hlášek) by se pokud možno neměl používat, resp. jeho použití je opodstatněné jen výjimečně.
2. Ten původní kód vedle hodnoty 0 vrátí null i v dalších případech, konkrétně tady: php.net/manual/en/types.comparisons.php - první tabulka (Comparisons of $x with PHP functions) a poslední sloupec (boolean : if($x)) ve všech případech, kde je napsáno FALSE.
V té tabulce je i celkem přehledně vidět rozdíl oproti isset.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0