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!