Dynamiska variabler och nestlade for/foreach

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
marcusgarden



Medlem i: 3132 dagar

Status: Offline



#742037
Inlägg Skrivet: 2017-12-12 03:51      Ämne: Dynamiska variabler och nestlade for/foreach Citera

Jag har ett problem som jag inte lyckas lösa:/

Jag försöker beräkna vinster efter ett visst mönster.

Det finns 10 grupper, 1-10 (exakt maxantal, men alla måste inte vara representerade).
Det finns ca x varianter (inget maxantal, alla måste inte vara representerade).
Det finns x klasser (inget maxantal, alla måste inte vara representerade).
Det finns 2 kön (man & kvinna, 1 & 2 i db).

När jag gör detta manuellt, alltså räknar i huvudet så vet jag hur jag gör men jag får inte till logiken:/

Om jag beskriver i ord så hoppas jag på att någon kan logiken bättre i PHP:)

Lista alla deltagare
Jag kolla först att jag är i rätt grupp.
Jag kollar sedan att jag är i rätt klass.
Jag kollar sedan att jag är i rätt variant.
Jag kollar sedan så att jag är i rätt kön.
Man kan inte vara i grupp utan variant klass eller kön, inget kan vara 0.
Om ny grupp (innebär alltid ny klass, variant och kön)
{lägg till ett pris upp till 5 i varje grupp och klass}

Så jag tänkt hitintills är ungefär (pseudokod)

Allt är först 0 (thisgrupp=0, thisvariant=0, thisklass=0, thiskön=0)

KOD:
1:
foreach alladeltagare
2:
IF thisgrupp!=alladeltagare[grupp]
3:
{
4:
thisgrupp=alladeltagare[grupp]
5:
 
6:
lägg till 1:a, 2:a, 3:e, 4:e eller 5:e-pris
7:
}


Man ska alltså hitta 1:a, 2:a, 3:e, 4:e och 5:e pristagare i varje grupp, max 50 vinnare i varje klass

Resultatet efter sökning kan se ut ungefär (se bifogad fil, problem med at lada upp fil, försöker klistra in från word:/ kanske inte blir lika snyggt:/)

(För varje klass) Klass 1
Placering 1 2 3 4 5
Grupp 1 x x x x x
Grupp 2 x x x x
Grupp 3 x x x x x
Grupp 4 x
Grupp 5 x x x
Grupp 6 x x x
Grupp 7 x x x x
Grupp 8 x x x x x
Grupp 9 x x x
Grupp 10 x x x
1:or=10st, 2:or=9, 3:or=9st, 4:or=5st, 5:or=3st

Klass 2
Placering 1 2 3 4 5
Grupp 1 x x x x
Grupp 2 x x x x x
Grupp 3 x x x
Grupp 4 x x
Grupp 5 x x
Grupp 6 x x x x
Grupp 7 x x x x
Grupp 8 x
Grupp 9 x x x x
Grupp 10 x x x
1:or=10st, 2:or=9, 3:or=7st, 4:or=5st, 5:or=1st
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4593 dagar
Från: Tavesta
Status: Offline



#742041
Inlägg Skrivet: 2017-12-16 14:40      Ämne: Citera

Jag tror du behöver förtydliga din fråga ifall problemet skall gå att lösa.

Var kommer nästlade for/foreach in i bilden?
Är det något som skall slumpas på något vis? Det verkar ju handla om att utse vinnare.
Var kommer variant och kön in i bilden? På vilket vis kan dessa vara "rätt"?

Om problemet handlar om vad jag tror det handlar om så skulle jag löst det genom att skapa en array med alla deltagare.
Sedan blanda den med shuffle
Skapa en mångdimensionell array (Inte nödvändigtvis en äkta sådan. En endimensionell med många parametrar i nycklarna fungerar också) med räknare som håller reda på hur många vinster som delats ut i de olika grupptillhörighetskombinationerna. Det mesta av arrayen kan skapas dynamiskt i själva loopen.
Loopa igenom alla deltagare (en enkel foreach. Inget nästlat här):
- Om deltagarens grupptillhörighetskombination saknar räknare så skapas en sådan
- Om deltagarens grupptillhörighetskombination ännu inte fått tillräckligt många vinster så delas en vinst ut och räknaren räknas upp.

Jag kan säkert ha missförstått något här, eftersom det är mycket i själva frågeställningen som jag tycker låter oklart.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic