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

0 votes

Hallo liebes Support-Team!

Ich habe eine Fragenbogen erstellt, bei dem ich Blöcke aus unterschiedlichen Fragen habe, die rotiert werden sollen. Innerhalb der Blöcke ist jede Frage auf einer eigenen Seite. Es werden sowohl die Fragen innerhalb als auch die Blöcke rotiert.

Ich möchte im Anschluss die Reihenfolge speichern, sodass ich bei der Auswertung einsehen kann, in welcher Reihenfolge jeder Versuchsperson die Fragen beantwortet hat. Ich weiß, dass ich dafür die Funktion put() verwenden soll, verstehe aber nicht, wie das mit meinem Beispiel funktionieren soll.

Bis jetzt habe ich den Code hier verwendet (zufällige Abfolge II) oder unten das Beispiel:

$rotation1 = array(
  'A.1' => array('A01','B02','A05'),
  'A.2' => array('B06','A09','B08'),
  'A.3' => array('B10','A13','B12'),
  'A.4' => array('A17','B16','A19'),
  'A.5' => array('A21','B20','A23')

);
foreach ($rotation1 as $key => $pages1) {
  $first = array_shift($pages1);
  shuffle($pages1);
  array_unshift($pages1, $first);
  $rotation1[$key] = $pages1;
}
shuffle($rotation1);

setPageOrder($rotation1, 'D01');

Vielen Dank!

in SoSci Survey (dt.) by s157289 (180 points)

1 Answer

0 votes

In der Anleitung zu put() finden Sie Code-Beispiele, wie Sie den (gemischten) Inhalt eines Arrays in interne Variablen speichern: Beispiel: Randomisierung I

In Ihrem Fall möchten Sie aber vermutlich auch die Reihenfolge der "untergeordneten" Arrays speichern? Dafür können Sie einfach vorein ein "flaches" Array erstellen. Und zwar vor oder nach dem setPageOrder():

$pages = [];
foreach ($rotation1 as $block) {
  $pages = array_merge($pages, array_values($block));
}

// Jetzt der Code aus der put()-Anleitung
for ($i=0; $i<count($pages); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV01', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $pages[$i]);
}
by SoSci Survey (199k points)
Ich habe den Code jetzt genauso eingegeben und dann in meinen erhobenen Daten nachgeschaut - jedoch sehe ich dort meine interne Variable 'L125' nicht.
Sie haben das IV01 im Code gegen L125 ausgetauscht? Was zeigt denn die Debug-Information auf der Seite?
Meine interne Variable heißt einfach 'L125'. Bei der Debug Information sehe ich keinen Fehler, ich habe einen Probedurchgang gemacht und es zeigt mir in den erhobenen Daten dann die Variable nicht.

Edit: Ich habe es gerade nochmal versucht und nun wird mir "Für die Frage L125 wurde kein Item mit der Kennung 2 gefunden" und "Für die Funktion put() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben: " angezeigt. Mehrfach, bei der Kennung werden unterschiedliche Zahlen durchgegangen
Genau ... ich meinte mit meiner vorigen Antwort die folgende Zeile im PHP-Code:

$id = id('IV01', $i + 1);

Und was diese Meldung angeht:

> Für die Frage L125 wurde kein Item mit der Kennung 2 gefunden

Wenn Sie 5x3=15 Seiten speichern möchten, stellen Sie bitte sicher, dass Sie in L125 auch 15 Variablen angelegt haben.
...