Hallo,
ich würde gerne Folgendes umsetzen:
Die Teilnehmenden bewerten ca. 120 Sätze in randomisierter Reihenfolge. Dabei wird pro Seite ein Satz präsentiert. Das läuft soweit auch (s. Code).
if (!isset($itemBlocks_A)) {
$questions_A = ['SA01', 'SA02'];
// Liste mit allen Items erstellen
$items_A = [];
foreach ($questions_A as $qstID_A) {
$qstItems_A = getItems($qstID_A, 'all');
foreach ($qstItems_A as $itemID_A) {
$items_A[] = [$qstID_A, $itemID_A];
}
}
// Liste mischen
shuffle($items_A);
// Liste speichern
$save_A = [];
for ($i=0; $i<count($items_A); $i++) {
$save_A[] = $items_A[$i][0].'_'.$items_A[$i][1];
}
put('IV01_01', implode (',', $save_A));
// Liste aufteilen
$itemBlocks_A = array_chunk($items_A, 1);
registerVariable($itemBlocks_A);
}
// Auf mehreren Seiten präsentieren
$i = loopPage(count($itemBlocks_A));
// Fragetext anzeigen
question('SA01', 'spacing=0', 'show-items=no');
// Items anzeigen
$items_A = $itemBlocks_A[$i];
foreach ($items_A as $n => $item_A) {
question($item_A[0], [$item_A[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'anchor=1');
}
Nach manchen dieser Sätze würde ich nun gerne eine Kontrollfrage einbauen (eine Art „Attention-Check“). Es soll insgesamt 5 Kontrollfragen geben – diese beziehen sich immer auf einen spezifischen Satz, d.h. diese dürfen nicht mit vermischt werden, sondern müssen immer nach dem passenden Satz folgen. Zudem müssen auch die Kontrollfragen auf einer neuen Seite erscheinen.
Meine bisherige Idee basiert auf : https://www.soscisurvey.de/help/doku.php/de:create:array und https://www.soscisurvey.de/help/doku.php/de:create:rotation-complicated
Ich hatte mir überlegt, zunächst die Items, die eine Kontrollfrage haben, noch vor dem Mischen aus items_A zu nehmen.
Danach könnte man 5 Arrays bilden, die jeweils aus dem Satz und der dazugehörenden Kontrollfrage bestehen. Schließlich müssten man dann den array items_A und die arrays mit den Sätzen + Kontrollfragen mischen.
Leider kommt nach dem ersten Schritt schon eine Fehlermeldung:
$mitK = ['SA01_01'];
$items = array_diff($items_A, $mitK);
Zudem bin ich mir unsicher, ob das der richtige Ansatz ist.
Schon jetzt vielen Dank für die Hilfe!