0 votes
in SoSci Survey (dt.) by s099001 (110 points)
closed by SoSci Survey

Hallo zusammen,

ich versuche etwas umzusetzen, was eigentlich exakt dem Beispiel "Zufällige Abfolge II" unter https://www.soscisurvey.de/help/doku.php/de:create:functions:setpageorder?s[]=setpageorder entspricht. Es gibt zwei Blöcke, "Sadism" und "SVO", und innerhalb des SVO-Blockes möchte ich die Reihenfolge der Seiten randomisieren, wobei die erste Seite (Instruktionen) immer am Anfang stehen soll. Deshalb habe ich den Beispielcode größtenteils kopiert und übernommen. Allerdings bekomme ich dann die Fehlermeldung "In der Funktion setPageOrder() wurde an Position 1 ein ungültiger Parameter vom Typ array(array) angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten."

// Erst einmal die Seitenkennungen als Array speichern
$rotation = array(
  'SVO' => array('SVOInstruction','SVO1','SVO2','SVO3','SVO4','SVO5','SVO6','SVO7','SVO8','SVO9'),
  'Sadism' => array('Sadism'),
);

// Jeden Block einzeln mischen
foreach ($rotation as $key => $pages) {
  // Die erste Seite aus dem Array $pages herausnehmen
  $first = array_shift($pages);
  // Den Rest mischen
  shuffle($pages);
  // Beides wieder zusammenfügen
  array_unshift($pages, $first);
  // Und in das Array $rotation zurückspeichern
  $rotation[$key] = $pages;
}
 
// Jetzt noch die Reihenfolge der Blöcke zufällig mischen
shuffle($rotation);


// Jetzt das Ergebnis noch als Seitenabfolge festlegen
// Weiter soll es anschließend mit Seite 'demo' gehen
setPageOrder($rotation, 'demo');


// Reihenfolge speichern
put('IV02_01', array_search('SVO', $rotation) + 1);
put('IV02_02', array_search('Sadism', $rotation) + 1); 

Das heißt für mich relativ eindeutig, dass setPageOrder() nicht damit umgehen kann, wenn ein zwei-dimensionales Array als erster Parameter übergeben wird. Was tun?

Edit: Ich habe das nun umgangen, indem ich die folgende Zeile vor setPageOrder() eingefügt habe:

// beide Arrays innerhalb $rotation zu einem Array zusammenfügen
$merged = array_merge($rotation[0], $rotation[1]);

Vielleicht sollte das Beispiel dahingehend angepasst werden?

closed with the note: Es liegen keine neuen/ergänzenden Informationen vor
by SoSci Survey (327k points)
Tipp: Der Knopf {} formatiert Code als solchen.
by SoSci Survey (327k points)
Zur Fehlermeldung: Arbeiten Sie auf www.soscisurvey.de oder auf einem externen Server?

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

...