0 votes
in SoSci Survey (dt.) by s085822 (120 points)
edited by s085822

Hallo.
Wie muss ich meinen Code anpassen, damit nicht nur meine Blöcke randomisiert angezeigt werden, sondern die Seiten innerhalb meines Blockes auch randomisiert angezeigt werden? Den Code unten habe ich aus einem anderen Thread kopiert, jedoch funktioniert das Mischen der einzelnen Seiten innerhalb der Blöcke nicht.
Vielen Dank im Voraus!

if (!isset($blocks)) {
  // Liste der Seiten definieren
  $blocks = array('Female1Start-Female4End','Male1Start-Male4End');
  // Liste mischen
  shuffle($blocks);
  // Die Seite ergänzen, wo es nachher weiter geht
  $blocks[] = 'Age';
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
}

setPageOrder($blocks);

if (!isset($blocks)) {
  // Liste der Seiten definieren
  $blocks = array(
    // Block 1
    array('Female1Start', 'Female2', 'Female3', 'Female4End'),
    // Block 2
    array('Male1Start', 'Male2', 'Male3', 'Male4End')
  );
  // Jeden einzelnen Block in sich mischen
  for ($i=0; $i<count($blocks); $i++) {
    shuffle($blocks[$i]);
  }
  // Liste der Blöcke mischen
  shuffle($blocks);
  // Die Seite ergänzen, wo es nachher weiter geht
  $blocks[] = 'Age';
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
}
setPageOrder($blocks);
by s047711 (250 points)
Ist es möglich "Meta-Blöcke" zu bilden und zu mischen, jedoch deren "Sub-Blöcke" fix zu halten? Ich mache ein Beispiel.

Ich habe "Metablock 1", der besteht aus zwei "Sub"-Blöcken (1P und 1N), diese jeweils à 2 Fragen (Metablock 1 also insgesamt aus 4 Fragen). Entsprechend bestehen Metablock 2 und 3 auch jeweils aus zwei Sub-Blöcken und diese ebenso jeweils aus 2 Fragen.
In den Sub-Blöcken soll die Reihenfolge der je 2 Fragen fix sein! Die Reihenfolge der beiden Sub-Blöcke innerhalb der Metablöcke jedoch randomisiert und auch die Reihenfolge der Metablöcke soll zufällig zugewiesen werden. Ich kann also nicht einfach die normale Anleitung zu Rotation + Mischen anwenden.

1 Answer

0 votes
by SoSci Survey (305k points)

Der zweite Teil ist im Prinzip schon richtig - nur muss das verschaltelte Array (Arrays im Array) noch ein ein flaches Array überführt werden:

if (!isset($pages)) {
  // Liste der Seiten definieren
  $blocks = array(
    // Block 1
    array('Female1Start', 'Female2', 'Female3', 'Female4End'),
    // Block 2
    array('Male1Start', 'Male2', 'Male3', 'Male4End')
  );
  // Jeden einzelnen Block in sich mischen
  for ($i=0; $i<count($blocks); $i++) {
    shuffle($blocks[$i]);
  }
  // Liste der Blöcke mischen
  shuffle($blocks);
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
  // Das verschaltelte Array in ein flaches Array umwandeln
  $pages = array_merge($blocks[0], $blocks[1]);
  $pages[] = 'Age';
}
setPageOrder($pages);
by s085822 (120 points)
Jetzt funktioniert es. Vielen, vielen Dank!!

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

...