0 votes
in SoSci Survey (dt.) by s216391 (130 points)

Hallo zusammen,

ich habe eine Frage bezüglich der Randomisierung. Ich habe 2 Gruppen, die eine Gruppe soll 2 Bilder angezeigt bekommen und die andere Gruppe 10 Bilder. Die Bilder der jeweiligen Gruppen sollen untereinander auf einer Seite angezeigt werden und unter jedem Bild soll eine Frage stehen. Mein php code dafür lautet aktuell:

if (value'IG01') == 1) {
text ('IG02');
question('IG15');
text ('IG03');
question ('IG16');
} elseif (value('IG01') == 2) {
text('IG04')
question ('IG17')
// etc.
};

Dadurch wird mir auch alles korrekt angezeigt, allerdings würde ich gerne die 10 Bilder für die eine Gruppe in einer beliebigen Reihenfolge anzeigen lassen & dabei sollen sie nach wie vor auf einer Seite untereinander mit der jeweiligen Frage erscheinen.
Gibt es bspw. eine Möglichkeit die Seitenrandomisierung auch darauf anzuwenden?

Können Sie mir diesbezüglich weiterhelfen?
Herzlichen Dank!

1 Answer

0 votes
by SoSci Survey (325k points)
edited by SoSci Survey

allerdings würde ich gerne die 10 Bilder für die eine Gruppe in einer beliebigen Reihenfolge anzeigen lassen

Eine Möglichkeit bestündige darin, dass Sie mit einem Array arbeiten, z.B.

$fragen = [
  'IG04' => 'IG17',
  'IG05' => 'IG18',
  'IG06' => 'IG19',
  // ...
];
$bilder = array_keys($fragen);
shuffle($bilder);
foreach ($bilder as $bild) {
  $frage = $fragen[$bild];
  text($bild);
  question($frage);
}
by s216391 (130 points)
Danke für die schnelle Antwort!
Ich habe es umgeschrieben aber habe Probleme damit die Array Liste in die if/else Funktion des Zufallsgenerators einzubauen und bekomme folgende Fehlermeldung: A parameter of the type integer has been used for the function text() instead of a legal ID.

Eingetragen als php code habe ich folgends:
 if (value('IG01') == 1) {
  text ('IG02');
  question('IG15');
  text ('IG03');
  question ('IG16');
  } elseif (value('IG01') == 2) {
  $bilder = [
 'IG02' => 'IG15',
 'IG03' => 'IG16',
 'IG04' => 'IG17',
 'IG05' => 'IG18',
 'IG06' => 'IG19',
 'IG07' => 'IG20',
 'IG08' => 'IG21',
 'IG11' => 'IG22',
 'IG10' => 'IG23',
 'IG12' => 'IG24',
];
shuffle($bilder);
foreach ($bilder as $bild => $frage) {
  text($bild);
  question($frage);
};
};
by SoSci Survey (325k points)
Oh ja, die Funktion shuffle() überschreibt die Schüssel des Arrays. Dann brauchen wir folgende Modifikation:

$bilder = [
  'IG04' => 'IG17',
  'IG05' => 'IG18',
  'IG06' => 'IG19',
  // ...
];
$bilderKeys = array_keys($bilder);
shuffle($bilderKeys);
foreach ($bilderKeys as $bild) {
  $frage = $bilder[$bild];
  text($bild);
  question($frage);
}

Ich pflege das oben noch in die Antwort ein.
by s216391 (130 points)
Vielen vielen Dank! Sie haben meinen Tag gerettet!! :-)

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

...