Funkce XOR obecně – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Funkce XOR obecně – PHP – Fórum – Programujte.comFunkce XOR obecně – PHP – Fórum – Programujte.com

 

oxidián0
Grafoman
8. 12. 2022   #1
-
0
-

Ahoj, mám takovou situaci že mám argument (Regulární výraz $ArgRegx) a funkci, která použije ten regex.

Kdy má být funkce zavolána je podle výsledku podmínky (true|false jako 1|0):

$ArgRegx	$matches[0]	
0	0	volat
0	1	nevolat
1	0	nevolat
1	1	volat

Je logicky správně abych toto aplikoval takto:

if ($ArgRegx XOR $matches[0]<>'')
else
SwitchPrint($typ, $value);"";  

případně takto?

if (!($ArgRegx XOR $matches[0]<>''))
SwitchPrint($typ, $value);

Nebo to mám úplně špatně?

Nahlásit jako SPAM
IP: 94.113.183.–
Kit+15
Guru
8. 12. 2022   #2
-
0
-

#1 oxidián
Místo XOR používám operátor `!==`

Nahlásit jako SPAM
IP: 46.135.65.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
oxidián0
Grafoman
8. 12. 2022   #3
-
0
-

XOP a !== přece není jedno a to samé. Nejde mi o porovnání stejného typu. Jde o to zavolat funkci pokud jsou obě podmínky splněny nebo není splněna ani jedna, což je opak XOR, takže asi ( !( A XOR B)) by mělo platit...

Nahlásit jako SPAM
IP: 94.113.183.–
gna
~ Anonymní uživatel
1891 příspěvků
8. 12. 2022   #4
-
0
-

#3 oxidián
XOP a !== přece není jedno a to samé

Když už sis to rozepsal do té tabulky, tak přece musíš vidět, že tě prakticky zajímá rovnost (a potažmo, že test nerovnosti je jako xor).

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
4016 příspěvků
9. 12. 2022   #5
-
0
-

https://www.php.net/manual/en/language.operators.logical.php

Asi by to mohlo fungovat. Si to muzes overit simulaci vsech moznych podminek. Ja bych to spis rozepsal jen na or a and. Xor by mne nenapadlo vubec pouzit :) Coz je samozrejme moje skoda.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4825:ac8e:7e0b:fc17...–
peter
~ Anonymní uživatel
4016 příspěvků
9. 12. 2022   #6
-
0
-

Jo, ale, nejsem si jisty, jestli to treba nebude nutne ozavorkovat. Jestli to treba mrcha nezxoruje prvni 2 cisla a pak porovna nerovnosti. Ale, asi nee, or, and by to proslo. Ale, zkus si to pohlidat v jinem nez php jazyku :) Tma casto tvurci moc neresi logicnost.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4825:ac8e:7e0b:fc17...–
oxidián0
Grafoman
9. 12. 2022   #7
-
0
-

Právě, že v php manuálu to popsali tak, jako kdyby to ani nebylo XOR. XOR má vrátit true pokud je A nebo B rovno 1, pokud ne (čili: je tam stav 0, 0 či 1, 1) což takto jako nevysvětlili v tom manuálu.

#2 Kit
#4 gna
Tak jo, teď jsem to rozepsal typově a už to vidím

$ArgRegx	$matches[0]	===	!==
""	""	shoda	neshoda
""	(našel) string	neshoda	shoda
"a=1"	(nenašel) ""	neshoda	shoda
"a=1"	(našel) "a=1"	shoda	neshoda

Ještě zkusím jednu tabulku

$ArgRegx	$matches[0]	===	!==
""		""		shoda	neshoda
""		(našel)	string	neshoda	shoda
"a=1"		(nenašel) ""	neshoda	shoda
"a=1"		(našel) "a=1"	shoda	neshoda

Ale ještě je otázka co to bude vracet, když $matches není pole, protože tam v tom případě bude false. 

if (!($ArgRegx XOR @$matches[0]<>''))
  SwitchPrint($typ, $value);"";  

nebo tedy

if ($ArgRegx !== (@$matches[0]<>'' ))
   SwitchPrint($typ, $value);"";  
Nahlásit jako SPAM
IP: 94.113.184.–
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, 25 hostů

Podobná vlákna

Xor operátor — založil oxidián

Xor: err 13 type mismatch — založil sdfsdfsdfsdf

Synchronizácia obecne — založil wjohnw

 

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