Autor Zpráva
pavuk
Profil
Tento kód je funkční
if($_GET['str']!='x')
echo '...'
ale následující ne. Nějak jsem se v tom ztratil a nevím jak správně zapsat "když se proměnná 'str' nerovná 'x' nebo se proměnná 'str' nerovná 'y' tak vypiš...
if(($_GET['str']!='x')||($_GET['str']!='y'))
echo '...'
Hledal jsem tu i na Linuxsoftu, ale neúšpěšně
ShiraNai7
Profil
"Nebo"? Nemyslíš spíš "a zároveň"?

<?php

 if('x' !== $var && 'y' !== $var) { ... }
Marek88
Profil
|| se vyhodnocuje tak, že stačí aby jeden výraz byl pravdivý a pak je to celé pravdivé. V tvém případě například bude proměnná $_GET["str"]=y. Potom v té podmínce bude x!=y ... to je pravda, a proto je to celé pravdivé. Správně bys tam měl mít &&.
pavuk
Profil
ShiraNai7:
Ne, mám skutečně na mysli 'x' nebo 'y', proto taky ty svislítka. Příliš jsem se na to "nebo" zaměřil aniž bych použil hlavu.
Marek88:
teď už je to funkční, děkuju. To že se to stane pravdivý celý a tím pádem to takhle dopadne jsem nedomyslel. Ovšem když to píšeš už mi to připadá srozumitelný...
Aleš Janda
Profil
pavuk:
Někdy je lepší napsat si opačnou podmínku a potom ji celou otočit: inverzní operátory porovnání a prohodit && a ||. A pokud by byl výsledek stejně matoucí, dělám toto:
if ($neco);
else { …kód, co se má provést… }
Alphard
Profil
Aleš Janda:
if ($neco);
else { …kód, co se má provést… }
Tak zrovna to se mi moc hezké nezdá.

pavuk:
Přemýšlel jste o možnostech vyhodnocení vaši podmínky? V $_GET['str'] očekáváte skalár, takže minimálně jedna nerovnost musí být vždy splněna.
Takže tam ani nemusí být podmínka když se proměnná 'str' nerovná 'x' nebo se proměnná 'str' nerovná 'y' tak vypiš vypište vždy.

Já bych asi použil
if (!in_array($_GET['str'], array('x', 'y')))

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:

0