0 votes
in SoSci Survey (dt.) by s000030 (110 points)

Folgendes Problem: es gibt zwei verschiedene Blöcke "Selbst" und "Fremd". Die Inhalte dieser Blöcke sollen randomisiert wiedergegeben werden (abgesehen vom ersten Array-Inhalt, in dem die Instruktion steht) und die Blöcke unter einander sollen auch vertauscht werden. Soweit ähnelt der Code sehr der Anleitung "Zufällige Abfolge II", aber zusätzlich brauchen wir etwas mehr Kontrolle welche Reihenfolge am Ende gespeichert wird, da abhängig vom Zufallsgenerator (RC01) noch Veränderungen in den Instruktionen nötig sind. Leider scheinen aber die Shuffle-Befehle innerhalb der Blöcke "Fremd" / "Selbst" nicht zu klappen. Irgendeine winzige Kleinigkeit fehlt, aber ich finde nicht heraus welche ...

// Erst einmal die Seitenkennungen als Array speichern
$rotationfremd = array('InstF', 'FI01-FI07', 'FP01-FP10');
$rotationselbst = array('InstS', 'SI01-SI07', 'SP01-SP10');
       
// Für Fremd-Szenarien
// Das erste Element (Instruktion) aus dem Array herausnehmen
$firstfremd = array_shift($rotationfremd);
    
// Restliche Inhalte des Arrays durchmischen
shuffle($rotationfremd);
 
// Wieder zusammenkopieren: Erste Seite Instruktion + randomisierte Reihenfolge
array_unshift($rotationfremd, $firstfremd);
registerVariable($rotationfremd);
 
// Für Selbst-Szenarien
// Das erste Element (Instruktion) aus dem Array herausnehmen
$firstselbst = array_shift($rotationselbst);

// Restliche Inhalte des Arrays durchmischen
shuffle($rotationselbst);
 
// Wieder zusammenkopieren: Erste Seite Instruktion + randomisierte Reihenfolge
array_unshift($rotationselbst, $firstselbst);
registerVariable($rotationselbst);
 
    
//Nun eine erzwungene Reihenfolge der Blöcke je nach Zufallsgenerator
    
if (value('RC01')==1) {
   $rotation= array_merge($rotationfremd, $rotationselbst);
   registerVariable($rotation);
} elseif (value('RC01')==2) {
   $rotation= array_merge($rotationselbst, $rotationfremd);
   registerVariable($rotation);
}
        
// Jetzt das Ergebnis noch als Seitenabfolge festlegen
// Weiter soll es anschließend mit Seite 'DQ' gehen

setPageOrder($rotation, 'DQ');

Falls also jemand eine Idee hätte ....

1 Answer

0 votes
by SoSci Survey (323k points)

Leider scheinen aber die Shuffle-Befehle innerhalb der Blöcke "Fremd" / "Selbst" nicht zu klappen.

Bitte geben Sie die Seite, die untereinander gemischt werden sollen, nicht als Bereich 'FI01-FI07' ein, sondern einzeln, also 'FI01','FI02','FI03','FI04','FI05','Fi06','FI07'. Dies eventuell als Array im Array, wie in Anleitung Rotation und Mischen von Blöcken.

Natürlich können Sie die gemischten Arrays dann noch nach Belieben anpassen. Wesentlich ist nur, dass Seiten, die gemischt werden sollen, einzeln angegeben werden. Eine Bereichs-Angabe liegt sonst nur als "ein Element" im Array vor, das immer genau in dieser Form erhalten bleibt.

by s000030 (110 points)
Super! Vielen Dank. Manchmal sieht man den Wald vor läuter Bäumen nicht ...

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...