I uppbyggnaden av arrayerna menar jag med "sväng" att jag kör en while/for sats för att fylla arrayen med värden.
Men allt ska köras dynamiskt... det är det som ställer till det för mig.
Säg till om jag begär för mycket. :)
Som så här:
Med en while/for sats fyller jag på arrayen, alla värden är dynmiska.
Denna gång är det tre personer nästa gång kan det vara 4 eller 5.
arrayen med värden ser ut som följer:
$person = array("person1","person2","person3");
$array=array(1,2,3,4,5,6);
$b=0;
$pos = 0;
for($a=0;$a<count($array);$a++)
if($pos==0)
$array[person[$b]][] = array($array[$a], "");
else
$array[person[$b]][] = array("", $array[$a]); // Vid denna inmatning är värde 1 orört? eftersom det redan finns info i den positionen hur skyddar jag den?
Har läst din redigering, men är tveksam om jag förstår vad du vill få ut.
Ska person1 få 1 och 4, person 2 4 och 6 o.s.v. ?
Vad ska då hända om det fanns tre värden till i siffer-arrayen ?
Person 1 ska få 1 och 4, person 2 ska få 2 och 4 osv. upp till 6 personer.
Sifferarrayen kommer alltid vara mycket längre än behovet så det problemet kommer aldrig att uppstå.
förtydling, maximalt kommer det bli så här:
person1 - 1 7
person2 - 2 8
person3 - 3 9
person4 - 4 10
person5 - 5 11
person6 - 6 12
Vet inte om jag förstått rätt, men som jag förstår det så ska arrayen första värde vara det värde som träffas på första gången, och det andra (sista) värdet ska vara det värde som träffas på sist.
Det jag får ut av detta är:
Array
(
[] => Array
(
[0] => KD32443-3 // Min värden...
[1] =>
)
)
Jag har försökt titta igenom din kod men kan inte riktigt se felet men det verkar som om den kör den "sanna" delen av if satsen hela tiden och aldrig kommer till else delen.
Jag provade att lägga till mina värden i $array i din kod resultatet blir då, min array är runt 100 poster:
Array
(
[person1] => Array
(
[0] => KD32443-3 // Min värden...
[1] =>
)
[person2] => Array
(
[0] => KD32442-3 // Min värden...
[1] =>
)
[person3] => Array
(
[0] => KD32441-3 // Min värden...
[1] =>
)
)
Den plockar också de tre sista värdena ur arrayen...
Det som till en början ska plockas ut när det gäller tre personer är de sex första värderna ur $array person1 ska ha värde 1 och 3, person 2 2 och 4 och person3 3 och 6.
Det hela systemet handlar om arbetsfördelning mellan anställda.
Numren jag använder är arbetsordernummer, de ska alltså jämt delas mellan personerna.
Därav de resultat jag vill ha men inte får fram.
Hmmm så fick inte jag.
Jag har en kod som nu tilldelar som jag själv vill men (!) jag får den inte att tilldela värde två i position 1.
Så här ser print_r ut efter min kod:
Array ( [Person1] => Array ( [0] => K23432 [1] => ) [Person2] => Array ( [0] => K13234 [1] => ) [Person3] => Array ( [0] => K98342 [1] => ) [Person3] => Array ( [1] => Array ( [0] => K89723 [1] => ) ) )
Som ni ser får jag inte in värden i position 1. Varför?
När du postar PHP-kod, använd
[ PHP]koden (fast utan mellanslag mellan '[' och 'PHP]' ), det gör programmet MYCKET lättare att läsa. Jämför:
$knasigArray = array(); // ;-)
$antalPers = 6;
for ($i = 1; $i <=$antalPers; $i++) {
$knasigArray['person'.$i] = array($i, $i+$antalPers);
} med
Tillbaka till problemet.
Eftersom jag inte vet vad som döljer sig bakom dina variabelnamn kanske jag missförstår. Men, jag tycker att din tilldelningsmetod ser rätt skum ut.
Om du lagrar alla arbetsordrar i $orders, och alla personer i $workers till att börja med, på formen:
$orders = array('K23432', 'K13234', ....);
$workers = array('Kalle', 'Pelle', .....);
Eller person1, person2 om du inte vet namnen. Då borde du få ut en lista på allt var person ska göra på följande vis.
$worklist = array();
//Varje person får en än så länge tom lista
foreach ($workers as $wNr => $name) {
$worklist[$name] = array();
}
$antalW = count($workers);
$wNr = 0;
//Går igenom alla orders och tilldelar successivt till en person
//i taget. När alla fått en order, får första personen sin andra osv...
foreach ($orders as $ordNr => $ordID) {
array_push($worklist[$workers[$wNr]], $ordID);
if ($wNr == $antalW) $wNr = 0; //Alla har fått, nästa runda
else $wNr++;
}
Exempel du har två personer Kalle och Pelle och fem ordrar: K1, K2, ... K5.
I slutändan får du då:
$worklist['Kalle'] är lika med (0 => K1, 1 => K3, 2 => K5)
$worklist['Pelle'] är lika med (0 => K2, 1 => K4)