Ja genau, das meinte ich. Die höchste und die zweithöchste Skala sollen mitgenommen und später mehrmals verwendet werden. Wenn zwei oder mehrere "punktgleich" auf Rang 1 liegen, sollen Rang 1 + 2 komplett zufällig zugewiesen werden. Wenn Rang 1 eindeutig ist und bei Rang 2 Gleichstand besteht, dann soll Rang 2 unter den entsprechenden Kandidaten zufällig zugewiesen werden.
Jetzt bin ich verwirrt. War das mit dem Code so gemeint?
$SumSoz = valueSum(
$Sozial = array(
'SK02_01',
'SK02_02',
'SK02_03',
'SK02_04',
)
);
$SumVer = valueSum(
$Verbal = array(
'SK02_05',
'SK02_06',
'SK02_07',
'SK02_08',
)
);
$SumLog = valueSum(
$Logisch = array(
'SK02_09',
'SK02_10',
'SK02_11',
'SK02_12',
)
);
$SumKre = valueSum(
$Kreativ = array(
'SK02_13',
'SK02_14',
'SK02_15',
'SK02_16',
)
);
$sumArray = array("Soz" => $SumSoz, "Ver" => $SumVer,"Log" => $SumLog,"Kre" => $SumKre);
debug($sumArray);
shuffle($sumArray);
asort($sumArray);
$maxis = array_keys($sumArray);
debug($maxis);
shuffle($maxis);
if (
($maxis[0] == "Ver") and
($maxis[1] == "Soz")
) {
setPageOrder('SE01-SE11, SE20, SE12-SE19, WF07, VE01-VE68, WF03');
}
if (
($maxis[0] == "Soz") and
($maxis[1] == "Ver")
) {
setPageOrder('VE01-VE68, WF07, SE01-SE11, SE20, SE12-SE19, WF03');
}
if (
($maxis[0] == "Kre") and
($maxis[1] == "Soz")
) {
setPageOrder('SE01-SE11, SE20, SE12-SE19, WF07, KR01-KR14, WF03');
}
if (
($maxis[0] == "Soz") and
($maxis[1] == "Kre")
) {
setPageOrder('KR01-KR14, WF07, SE01-SE11, SE20, SE12-SE19, WF03');
}
if (
($maxis[0] == "Ver") and
($maxis[1] == "Kre")
) {
setPageOrder ('KR01-KR14, WF07, VE01-VE68, WF03');
}
if (
($maxis[0] == "Kre") and
($maxis[1] == "Ver")
) {
setPageOrder ('VE01-VE68, WF07, KR01-KR14, WF03');
}
if (
($maxis[0] == "Log") and
($maxis[1] == "Ver")
) {
setPageOrder ('VE01- VE68, WF07, LM01-LM13, WF03');
}
if (
($maxis[0] == "Ver") and
($maxis[1] == "Log")
) {
setPageOrder ('LM01-LM13, WF07, VE01-VE68, WF03');
}
if (
($maxis[0] == "Soz") and
($maxis[1] == "Log")
) {
setPageOrder ('LM01-LM13, WF07, SE01-SE11, SE20, SE12-SE19, WF03');
}
if (
($maxis[0] == "Log") and
($maxis[1] == "Soz")
) {
setPageOrder ('SE01-SE11, SE20, SE12-SE19, WF07, LM01-LM13, WF03');
}
if (
($maxis[0] == "Log") and
($maxis[1] == "Kre")
) {
setPageOrder ('KR01-KR14, WF07, LM01-LM13, WF03');
}
if (
($maxis[0] == "Kre") and
($maxis[1] == "Log")
) {
setPageOrder ('LM01-LM13, WF07, KR01-KR14, WF03');
}
Jetzt wird nicht mehr gefiltert und es erscheint folgende Debug-Info:
Debug-Information für $sumArray: Soz14, Ver11, Log12, Kre10
Hinweis (Seite 5)
Debug-Information für $maxis:
00, 11, 22, 33
Ich hatte dieses Problem (Nach Rang 1 + 2 filtern) schon mal gelöst (siehe folgender Code). Damals war nur das Problem bei Gleichstand geblieben (was tun, wenn zwei oder mehr Skalen denselben Wert aufweisen?).
$SumSoz = valueSum(
$Sozial = array(
'SK02_01',
'SK02_02',
'SK02_03',
'SK02_04',
)
);
$SumVer = valueSum(
$Verbal = array(
'SK02_05',
'SK02_06',
'SK02_07',
'SK02_08',
)
);
$SumLog = valueSum(
$Logisch = array(
'SK02_09',
'SK02_10',
'SK02_11',
'SK02_12',
)
);
$SumKre = valueSum(
$Kreativ = array(
'SK02_13',
'SK02_14',
'SK02_15',
'SK02_16',
)
);
// Sortiere mir alle Summen und geben sie mir aus
$SumArray = array("Soz" => $SumSoz, "Ver" => $SumVer,"Log" => $SumLog,"Kre" => $SumKre);
arsort($SumArray);
$Dim1 = array_keys($SumArray)[0];
$Dim2 = array_keys($SumArray)[1];
if (
($Dim1 == "Ver") and
($Dim2 == "Soz")
) {
setPageOrder('SE01-SE11, SE20, SE12-SE19, WF07, VE01-VE05, WF03');
}
if (
($Dim1 == "Soz") and
($Dim2 == "Ver")
) {
setPageOrder('VE01-VE05, WF07, SE01-SE11, SE20, SE12-SE19, WF03');
}