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

Liebes Soscisurvey-Team,

ich versuche gerade eine recht komplexe Randomisierung für meine Fragebogenseiten zu realisieren.

Der Fragebogen soll mit je fünf Seiten starten, die in randomisierter Reihenfolge dargeboten werden. Anschließend sollen die übrigen 55 Seiten ebenfalls randomisiert dargeboten werden. Das ist an sich kein Problem, allerdings soll immer, wenn die Teilnehmer auf die Frage auf diesen Seiten antworten, eine zusätzliche Seite gezeigt werden, die bei keiner Antwort nicht gezeigt wird.

Um die Randomisierung mit möglichst wenig Tipparbeit zu erreichen, habe ich folgendes gemacht:

// fixierte Seiten am Anfang des Fragebogens je mit der optionalen Folgeseite
$fixedPages = array(
  12 => array('I13','I13CI'),
  19 => array('I20','I20CI'),
  22 => array('I23','I23CI'),
  25 => array('I26','I26CI'),
  29 => array('I29','I29CI'));
  
// folgende Seiten
$randomPages = array();
for($i = 1; $i <= $anzahlSeiten; $i++){
    array_push($randomPages, array('I'.($i), 'I'.($i).'CI'));
}

// Entfernen der fixierten Seiten am Anfang aus dem erstellten Array (das spart Tipparbeit, statt dass man wie für das Array oben jede Kombination einzeln tippt
$randomPages = array_diff_key($randomPages, $fixedPages);

// Indizes wieder in die richtige Reihenfolge bringen
$randomPages = array_values($randomPages);

// beide arrays mischen
shuffle($fixedPages);
shuffle($randomPages);

// gemischte Arrays zu einem Array zusammenfügen
$pages = array_merge($fixedPages, $randomPages);

// anschließende Seite nach Randomisierung anfügen
$pages [] = 'DE';
registerVariable($pages);

Auf den jeweiligen Seiten wollte ich das dann so realisieren, dass, wenn keine Antwort gegeben wird, goToPage('next') ausgeführt und damit die optionale Seite übersprungen wird.

Kann man die array_diff_key-Funktion für php irgendwie im Fragebogen freischalten oder soll ich lieber per Hand den zweiten Array tippen?

Vielen Dank schon mal und viele Grüße!

in SoSci Survey (dt.) by s052839 (275 points)

1 Answer

+1 vote
 
Best answer

Kann man die array_diff_key-Funktion für php irgendwie im Fragebogen freischalten

Kann man ... hiermit erledigt auf www.soscisurvey.de

Die Variable $anzahlSeiten scheint mir im Moment noch nirgends definiert zu werden. Aber diese Feinheiten überlasse ich wieder Ihnen.

by SoSci Survey (154k points)
selected by s052839
Vielen Dank! Die Variable habe ich schon einige Seiten vorher definiert, deswegen taucht die hier im Code nicht mehr auf ;)
...