Seznam podminek v retezci – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Seznam podminek v retezci – PHP – Fórum – Programujte.comSeznam podminek v retezci – PHP – Fórum – Programujte.com

 

zak0
Newbie
22. 1. 2019   #1
-
0
-

Ahoj,

lze v PHP pouzit nasledujici zapis? Pokud ano, jak ma spravne vypadat zapis if ($podminky )? Zkousel jsem ruzne varianty ktere me napadly ale bez uspechu.

$podminky="(($aaa='neco')OR($bbb='neco')OR($ccc='neco'))"

if ($podminky ) { echo $nejakytext; }

Diky za radu!

Nahlásit jako SPAM
IP: 31.30.86.–
zak0
Newbie
22. 1. 2019   #2
-
0
-

   

$podminky="(($aaa='neco')OR($bbb='neco')OR($ccc='neco'))";


oprava ...

Nahlásit jako SPAM
IP: 31.30.86.–
Kit+15
Guru
22. 1. 2019   #3
-
0
-

#1 zak
 

$podminky = ($aaa == 'neco') && ($bbb == 'neco') && ($ccc == 'neco');

if ($podminky) {
    echo $nejakytext;
}
Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
23. 1. 2019   #4
-
0
-

1. https://translate.google.com/
podminka = condition
2. google.com
php condition example
3. shodou okolnosti hned prvni odkaz je na manual. V online verzi je sousta komentaru od uzivatelu.
http://php.net/…tures.if.php
a jedna z prvnich vet ma odkaz na nejake detaily:
'As described in the section about expressions,'
http://php.net/…ressions.php
a vpravo v menu se dostanes na comparsion operators
http://php.net/…mparison.php
a ted nevim dalsi stranku pro operace mezi podminkami, ale na tehle je to take pekne shrnute
http://php.net/…ecedence.php

$podminky="(($aaa='neco')OR($bbb='neco')OR($ccc='neco'))"
$podminky = $aaa=='neco' || $bbb=='neco' OR $ccc=='neco';
$x = $aaa='neco' // to je true, pokud se podari operace prirazeni, coz se obvykle podari; Tohle se pouziva, kdyz vis, co delas a potrebujes vysledek funkce ulozit soucasne do promene.
Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
zak0
Newbie
23. 1. 2019   #5
-
0
-

#4 peter
Diky, zkusil jsem to dle tve rady ale bohuzel mi to nefunuje ...

$aaa = 'svestka';
$bbb = 'hruska';
$ccc = 'jablko';

$podminky = $aaa=='neco' || $bbb=='neco' OR $ccc=='neco';

if($podminky)
{ echo "Podminky byly splneny";}

Nemela by byt nalezena zadna shoda ale skript presto vypisuje ze podminky byly splneny.

Nahlásit jako SPAM
IP: 31.30.86.–
zak0
Newbie
23. 1. 2019   #6
-
0
-

#5 zak
Dal jsem sem spatny kod ... 

$aaa = 'svestka';
$bbb = 'hruska';
$ccc = 'neco';

$podminky = $aaa=='neco' || $bbb=='neco' OR $ccc=='neco';

if($podminky)
{echo "<h1>Podminky byly splneny</h1>";}else{echo "<h1>Podminky NEBYLY splneny</h1>";}

I kdyz je splnena podminka, skript stale vypisuje ze podminky nebyly splneny.

Nahlásit jako SPAM
IP: 31.30.86.–
Rozumbrada
~ Anonymní uživatel
1 příspěvek
23. 1. 2019   #7
-
+1
-
Zajímavé
zak +

Takhle je to sprave:

if($podminky==TRUE)
Nahlásit jako SPAM
IP: 31.30.12.–
gna
~ Anonymní uživatel
1891 příspěvků
23. 1. 2019   #8
-
0
-
Nahlásit jako SPAM
IP: 213.211.51.–
zak0
Newbie
23. 1. 2019   #9
-
0
-

DIky vsem, takhle jsem to mel vyhodnocovat ale nenapadlo me to ...

Nahlásit jako SPAM
IP: 31.30.86.–
Kit+15
Guru
23. 1. 2019   #10
-
0
-

#7 Rozumbrada
Tak je to špatně. Konstanty FALSE a TRUE se při vyhodnocování booleovských výrazů nepoužívají.

Nahlásit jako SPAM
IP: 37.188.243.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
23. 1. 2019   #11
-
0
-

#6 zak
Uvedený příklad bych realizoval takto:

function podminky($slovo) {
    switch ($slovo) {
        case 'svestka':
        case 'hruska':
        case 'neco':
            return "<h1>Podminky byly splneny</h1>";
    }
    return "<h1>Podminky NEBYLY splneny</h1>";
}
echo podminky('neco'));
Nahlásit jako SPAM
IP: 37.188.243.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
24. 1. 2019   #12
-
0
-

 Asi kazdy cteme jinou stranku. OR je uplne jina operace nez ||.

$podminky = $aaa=='neco' || $bbb=='neco' OR $ccc=='neco';
$podminky = $aaa=='neco' || $bbb=='neco' || $ccc=='neco';

Kit - Casove rychlejsi by melo byt reseni s IF. dalo by se pouzit in_array.

Kit - 'Konstanty FALSE a TRUE se při vyhodnocování booleovských výrazů nepoužívají.' :) Tady si dovolim nesouhlasit. Pokud ma byt hodnota v promene boolean, tak tam vzdy pisi true/false. Pokud je to string nebo neco jineho, tak tam pisi prevodni funkci Boolean() nebo porovnavam se stringem. Mozna je kod delsi, ale neznamy program je tak prehlednejsi.  

$x = array();
if ($x) // to ti vrati true, nevis, zda je to spravne nebo spatne
$x = array();
if ($x==true) // ted ale vis, ze $x melo byt asi true nebo false, takze, kdyz ti vardump vyhodi array, tak vis, ze je to spatne
Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
gna
~ Anonymní uživatel
1891 příspěvků
24. 1. 2019   #13
-
0
-

#12 peter
Nesmysl.

Nahlásit jako SPAM
IP: 213.211.51.–
Kit+15
Guru
24. 1. 2019   #14
-
0
-

#12 peter
 

if ($x) ...

Nikdy takhle netestuji string, array ani číslo. Pouze boolean. Právě proto tam nedávám false|true. Dávám tím najevo, že v $x je boolean.

Tohle asi také neděláš: 

if (isset($value) == true) ...
if (($value > 10) == true) ...

Přitom je to zcela totéž.

BTW: Proměnné typu boolean nepoužívám. Zjistil jsem, že k tomu v moderních jazycích není důvod.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
24. 1. 2019   #15
-
0
-

#12 peter
Udělal jsem si benchmark. Switch je asi 2× rychlejší než in_array() a 5× rychlejší než složená podmínka.

Dodatek: Když jsem odečetl režii volání funkce, rozdíly byly ještě markantnější, skoro řádové.

Nahlásit jako SPAM
IP: 37.188.244.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
25. 1. 2019   #16
-
0
-

Posly vic infa. Verzi php, kod testeru a tak. Ja kdysi delal testy a mezi switch a ify nebyl zadny vyznamny rozdil. Samozrejme, kdyby se nekdo ptal, doporucuji switch nebo pouzit pole a isset. 
A tez kdosi kdysi rikal, ze je vyznamny rozdil mezi while, foreach a for. Tak to take neni. Jen to mel napsane tak, ze pri kazdem for cyklu kontroloval velikost pole. To se pak nemuze divit :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
peter
~ Anonymní uživatel
4014 příspěvků
25. 1. 2019   #17
-
0
-

http://jsben.ch/o0UDx
3% if, 4% switch, map 100%
if jim vyslo rychlejsi

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
peter
~ Anonymní uživatel
4014 příspěvků
25. 1. 2019   #18
-
0
-

Ale nepopiram, ze to je mozne. Oni totiz, jak delali upgrade z php4 na 5 a vys, tak spoustu funkci zmastily. Treba ord a chr bylo pomalejsi nez pouzit pole.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Kit+15
Guru
25. 1. 2019   #19
-
0
-

#16 peter
Použil jsem PHP 7.2 a algoritmy, které jsou zde uvedené. Pro každý z nich 1000000 iterací, pro jistotu 2× za sebou kvůli eliminaci případného vlivu cache. 

Switch:      0.132627
in_dict:     0.777697
Slozena:     2.327550
Switch:      0.105734
in_dict:     0.734207
Slozena:     2.267069

V testech bylo 20 různých stringů za sebou, vždy byl platný až ten poslední.

Nahlásit jako SPAM
IP: 176.74.140.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
26. 1. 2019   #20
-
0
-

Novacek? Bez kodu ti nemuzu rici, co delas spatne. Treba je chyba, ze pokazde hledas posledni polozku. Nebo tam nemas returny (ve funkci) nebo mas chybne zavorky,..

Ty jo, nekdo by to forko uz mel spravit :) V edge je tu fura reklam. Hlavne spravne nefunguje editacni policko. Neustale mi samovolne preskakue pozice kurzoru pri vkladani noveho radku, kodu nebo, kdyz predem zaskrtnu google overeni :)

Nahlásit jako SPAM
IP: 193.84.203.–
peter
~ Anonymní uživatel
4014 příspěvků
26. 1. 2019   #21
-
0
-

Hlavne, ja bych si to treba rad spustil u sebe, co to vypise. Nechci mit rozdiny kod s jinymi vysledky

Nahlásit jako SPAM
IP: 193.84.203.–
Kit+15
Guru
26. 1. 2019   #22
-
0
-

#20 peter
Co je to "edge"? Na stránce to nevidím.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
26. 1. 2019   #23
-
0
-

google = edge, prvni odkaz Microsoft Edge
 

Nahlásit jako SPAM
IP: 193.84.203.–
Kit+15
Guru
26. 1. 2019   #24
-
0
-

#23 peter
Jenže na této stránce nevidím žádnou reklamu na Edge, ale na iPhone.

Nahlásit jako SPAM
IP: 37.188.234.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
28. 1. 2019   #25
-
0
-

Nevim, zda si rozumime. Psal jsem to i do Vylepseni fora, ze editace zpravy mi ve FF nefunguje, ze na odpovedi pouzivam Edge.
Jenze v Edge nefunguje spravne editace. Sam si doplnuje mezery, nove radky, posouva kurzor… Psani je hrozne neprijemne.
A kdyz si predem zaskrtnes Captchu, tak ti ji casem odskrtne a zase ti pri psani preskoci kurzor nekam pryc.
Proste je to dost nepratelske.

Ve FF to teda nejde vubec.
V IE8 nemam odvahu to zkouset.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Kit+15
Guru
28. 1. 2019   #26
-
0
-

#25 peter
Aha, takže z použitelných prohlížečů vlastně zbývá jen Chrome.

BTW: Mně to ve FF jede normálně.

Nahlásit jako SPAM
IP: 194.228.20.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 41 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý