Autor | Zpráva | ||
---|---|---|---|
helmut 456 Profil * |
#1 · Zasláno: 16. 7. 2014, 13:54:10
Zdravím,
potřeboval bych vytvořit následující podmínku: 1) mám proměné např x='auto, bagr, tramvaj, trolejbus' a y='cukr, kava, caj' 2)poté mám proměnou z='tramvaj, letadlo, bagr, kava' 3)potřebuju zjistit, zda je alespoň jedno slovo z přoměných x a z je stejné a pokud ano, tak vypíšu např ok a skončím. 4)pokud se ani jedna shoda nenajde, tak porovnám přoměné y a z, pokud je minimálně jedno slovo shodné, vypíšu ok2 a pokud neni nic shodné vypíšu neni Jen ještě poznamenám, že je uplně jedno, jestli je tam jedna nebo více shod, takže po nalezení jakékoliv první shody může program končit. V proměnné je vždy slovo, slovo2, slovo3 Napadá někoho, jak toto udělat pomocí php? Nějak nemůžu nic vymylet.. |
||
mimochodec Profil |
#2 · Zasláno: 16. 7. 2014, 13:59:58
helmut 456:
Obsah těch x, y, z převedeš na pole: http://cz1.php.net/manual/en/function.explode.php Položky těch polí ořežeš o nadbytečné mezery: http://cz1.php.net/manual/en/function.trim.php Položky polí porovnáš proti sobě ve vnořených cyklech: http://cz1.php.net/manual/en/control-structures.foreach.php Zkus z toho něco zkonstruovat, pak se případně ptej konkrétněji. |
||
helmut 456 Profil * |
#3 · Zasláno: 16. 7. 2014, 15:29:49
Díky za radu,
bod 1 je jasný, ořezání je mi taky jasné, nicméně to nebudu potřebovat, ale moc jsem nepochopil jak porovnat ty 2 pole, aby se porovna každý znak s každým a ne pouze první s prvnim a druhý s druhym. Nemohl bys prosím na příkladu ukázat, jak porovnat tyto 2 pole? jde mi o to, aby to vyhodilo, jsou minimálně 2 stejné, nebo nejsou stejné. <?php $x = "auto, bagr, tramvaj, trolejbus"; $y = "cukr, kava, caj"; $xpole = explode(", ", $x); $ypole = explode(", ", $y); ?> |
||
mimochodec Profil |
#4 · Zasláno: 16. 7. 2014, 15:38:42
helmut 456:
$nalezeno = ""; foreach ($xpole as $xhodnota) { foreach ($ypole as $yhodnota) { if ($xhodnota == $yhodnota) { $nalezeno = $xhodnota; break; } } } Jen nevím, jak zařídit, aby se v případě toho nalezení uteklo i z toho x cyklu. Ale to je věc spíš kosmetická a nevýznamná, pokud nepůjde o desetitisíce položek. A nezapomeň si někde ty hodnoty otrimovat, třeba v tom ifu. |
||
xROAL Profil |
#5 · Zasláno: 16. 7. 2014, 15:46:51
mimochodec:
„Jen nevím, jak zařídit, aby se v případě toho nalezení uteklo i z toho x cyklu.“ break u (rovnako aj pri continue ) môžeš dať číselný agrument, ktorý hovorí "o koľko úrovní" má vyskočiť. V tomto prípade by to teda bolo break 2; , prvý break je von z "y cyklu" a druhý break je von z "x cyklu".
|
||
mimochodec Profil |
#6 · Zasláno: 16. 7. 2014, 15:47:16 · Upravil/a: mimochodec
Nevylučuju, že někdo přijde s tím, že na to existuje vyloženě nějaká php funkce. Teď v rychlosti jsem našel i jiné řešení. Připadalo by v úvahu, kdybys měl jistotu, že každé to slovo je v tom jednom poli jen jednou. Pak by stačilo ta pole sloučit a:
if(count(array_unique($array))<count($array)) { // Array has duplicates } else { // Array does not have duplicates } Zdroj: http://stackoverflow.com/questions/1170807/how-to-detect-duplicate-values-in-php-array xROAL: „breaku (rovnako aj pri continue) môžeš dať číselný agrument, ktorý hovorí "o koľko úrovní" má vyskočiť.“ Pěkné, díky, neznal jsem. |
||
Tori Profil |
#7 · Zasláno: 16. 7. 2014, 15:57:45
Není od věci procvičit si procházení cyklů, ovšem máme i array_intersect
|
||
mimochodec Profil |
#8 · Zasláno: 16. 7. 2014, 15:59:58
Tori:
Já jsem to tušil, jsi zlá! :-) |
||
helmut 456 Profil * |
#9 · Zasláno: 16. 7. 2014, 20:21:43
Tak jsem to dal dohromady a tadyto jsem z toho vykoumal :)
Všem moc děkuji za pomoc :) $x = "auto, bagr, tramvaj, trolejbus"; $y = "cukr, kava, caj"; $z = "ff, fff, ff, fff"; $nalezeno = ""; $xpole = explode(", ", $x); $ypole = explode(", ", $y); $zpole = explode(", ", $z); $result = array_intersect($xpole, $zpole); if (empty($result)) { echo "greeen";} if (!empty($result)) { echo "blue";} |
||
mimochodec Profil |
#10 · Zasláno: 16. 7. 2014, 20:41:01
helmut 456:
A co $ypole? |
||
DarkMeni Profil |
#11 · Zasláno: 16. 7. 2014, 20:46:30
u tý podmínky nakonci stačí použít
else (nemusíš psát 2 podmínky)
|
||
helmut 456 Profil * |
#12 · Zasláno: 16. 7. 2014, 21:00:44
mimochodec: to tam pak přidám bohužel nemam ted čas a neumazal jsem to stejně jako 'nenalezeno'
DarkMeni: díky za tip :) |
||
Časová prodleva: 11 let
|
0