Portál AbcLinuxu, 19. dubna 2024 06:52


Dotaz: PHP - Ternární operátor

6.2.2013 02:21 Jakubysko
PHP - Ternární operátor
Přečteno: 311×
Odpovědět | Admin
Ahoj, poradí někdo proč tohle nefunguje? Nehází to ani žádnou chybu :-( Díky
<input type="radio" name="choice" value="1" '.(isset($_SESSION['choice']) AND ($_SESSION['choice']==1) ? 'checked ' : '').'/>
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.2.2013 07:45 lofcek
Rozbalit Rozbalit vše Re: PHP - Ternární operátor
Odpovědět | | Sbalit | Link | Blokovat | Admin
To vies php je divny jazyk (rozumej zastaraly, neohrabany).

Ma operatory "AND" a "&&", ktore robia presne to iste, ale AND ma navyse pomylenu prioritu a teda "a AND b ? 'checked' : ''" sa vyhodnoti ako: a && ( b ? 'checked' : '')

vid tuto
6.2.2013 08:51 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: PHP - Ternární operátor
Možná lépe viz tady.
A k dotazu, používáním jen && a || místo AND a OR (krom specifických případů jako OR die…) si ušetříte v některých případech nervy.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
FrostyX avatar 6.2.2013 08:44 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc
Rozbalit Rozbalit vše Re: PHP - Ternární operátor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je potřeba to jen lépe uzávorkovat ;-)
echo '<input type="radio" name="choice" value="1" '.((isset($_SESSION['choice']) AND ($_SESSION['choice']==1)) ? 'checked " ' : '').'/>';
FrostyX.cz | 1984 was not supposed to be an instruction manual.
6.2.2013 09:25 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: PHP - Ternární operátor
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je teda docela hustej bastl - brainfuck. Co takhle, kdyz uz nepouzivas zadnej framework ci sablonovaci system aspon symbolicky oddelil proces renderovani a logiku?

Daleko citelnejsi je mit nekde v casti, kde pripravujes data (v controleru) neco takoveho:
<?php

$checkedAttr = ( isset($_SESSION['choice']) && $_SESSION['choice'] == 1 ) ? 'checked="checked"' : '';

?>
Anebo citelnejsi varianta:
<?php

$checkedAttr = '';

if ( isset($_SESSION['choice']) && $_SESSION['choice'] == 1 )
{ 
    $checkedAttr  = 'checked="checked"';
}

?>
A v casti, kde renderujes sablonu:

<input type="radio" name="choice" value="1" <?php echo $checkedAttr; ?> />

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.