Bitt klären Sie zunächst, ob es für Ihre Messung überhaupt sinnvoll ist, die Items zu rotieren:
Sinn und Unsinn der Rotation
Um die Items einer Frage in "Blöcken" zu rotieren, benötigen Sie zunächst ein geschachteltes Array (mehrere Listen in einer Liste) der Items. Das könnte so aussehen:
$items = [
[1,2,3,4,5,6],
[7,8,9,10,11,12],
[13,14,15,16,17,18,19]
];
Hier exemplarisch drei Blöcke. Jetzt können Sie jede "Zeile" mischen:
for ($i=0; $i<count($items); $i++) {
shuffle($items[$i]);
}
Jetzt noch zu einem Array zusammenführen...
$itemsComplete = [];
for ($i=0; $i<count($items); $i++) {
$itemsComplete = array_merge($itemsComplete, $items[$i]);
}
Und dann die Frage mit dieser Liste stellen:
question($itemsComplete);
Wenn Sie verhindern möchten, dass sich die Reihenfolge beim Neu-Laden der Seite (z.B. weil Items übersehen wurde) zu verhinden, benötigen Sie noch ein isset()
und ein registerVariable()
. Und die FOR-Schleifen kann man zusammenfassen.
if (!isset($itemsComplete)) {
$items = [
[1,2,3,4,5,6],
[7,8,9,10,11,12],
[13,14,15,16,17,18,19]
];
for ($i=0; $i<count($items); $i++) {
shuffle($items[$i]);
$itemsComplete = array_merge($itemsComplete, $items[$i]);
}
registerVariable($itemsComplete);
}
question($itemsComplete);