Nun habe ich bisher leider keinerlei Vorerfahrung
Dafür sind Sie aber schon ziemlich weit gekommen. Respekt!
Als Ergebnis Ihrer Funktion bekommen Sie ein geschachteltes Array, und zwar aus Paaren von jeweils AB und CD. Diese Päärchen mischen Sie dann. Jetzt fehlen nur noch zwei Kleinigkeiten:
Sie müssen (wenn Sie die Items einzeln zeigen möchten) das verschachtelte Array wieder "flach" machen, damit Sie eine Abfolge von Items, nicht von Paaren haben.
Sie müssen in der Liste noch vermerken, um welche Frage es geht, denn getItems()
liefert nur die Nummer des Items, ohne Frage. Die Information A, B, C oder D geht im Moment noch verloren.
Um es noch ein wenig komplizierter zu machen (nein, das ist tatsächlich der einfachste Weg) legen ich also als erstes noch eine Schachtel-Ebene in den Paaren an. Und zwar speichere ich zur Item-Nummer noch die Frage:
$paare=array();
for ($i=0; $i<count(8); $i++) {
$paare[] = array(array('TE01', $itemA[$i]), array('TE02', $itemB[$i]));
$paare[] = array(array('TE03', $itemC[$i]), array('TE04', $itemD[$i]));
}
Den Variablenname $items
habe ich hier durch $paare
ersetzt. Und nach dem letzten shuffle()
müssen wir die Paare noch aufteilen:
shuffle ($paare);
$items = array();
foreach ($paare as $paar) {
$items[] = $paar[0];
$items[] = $paar[1];
}
registerVariable($items);
Am Ende müssen Sie in question()
neben der Frage-ID noch die Item-ID angeben. Wohlgemerkt: In $items sind lauter Arrays abgelegt, die jeweils eine Frage-Kennung auf Index 0 und eine Item-Nummer auf Index 1 enthalten:
question($items[$i][0], $items[$i][1]);
Hier nochmal alles zusammen und vorbehaltlich eventueller Flüchtigkeitsfehler.
if (!isset($items)) {
$itemA = getItems('TE01','all');
$itemB = getItems('TE02','all');
$itemC = getItems('TE03','all');
$itemD = getItems('TE04','all');
shuffle($itemA);
shuffle($itemB);
shuffle($itemC);
shuffle($itemD);
$paare = array();
for ($i=0; $i<count(8); $i++) {
$paare[] = array(array('TE01', $itemA[$i]), array('TE02', $itemB[$i]));
$paare[] = array(array('TE03', $itemC[$i]), array('TE04', $itemD[$i]));
}
shuffle($paare);
$items = array();
foreach ($paare as $paar) {
$items[] = $paar[0];
$items[] = $paar[1];
}
registerVariable($items);
}
$i = loopPage(count($items));
question($items[$i][0], $items[$i][1]);
Wenn Sie möchten, können Sie das shuffle($itemA)
und shuffle($itemC)
am Anfang noch weglassen - aber es stört auch nicht.