0 votes
in SoSci Survey (dt.) by s091065 (210 points)

Hallo,
ich habe folgendes Problem, vielleicht weiß jemand Rat?
Ich habe folgendes array, welches mir eine Kombintion aus Fragen erstellen soll, die dann geshuffelt werden.

if (value('IV01_01') == 8){
//group: respond to situation, test for situation
$seiten = array(
array('b1ss','fb25'),
array('b2ss','fb26'),
array('b3ss','fb27'),
array('b4ss','fb28'),
array('b5ss','fb29'),
array('b6ss','fb30'),
array('b7ss','fb31'),
array('b8ss','fb32')
);
shuffle($seiten);
$seiten[] = 'in2s';
setPageOrder($seiten);
}

Nun hab ich leider ein wenig Schwierigkeiten mit der Speicherung der geshuffelten Abfolge (was noch gut ging, als ich hier noch kein verschateltes Array hatte). Im moment ist das hier mein Entwurf für die Speicherung:

foreach ($seiten as $seite) {
for ($i=0; $i<count($seite); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV02', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $seite[$i]);
}
}

Was hier momentan passiert, ist dass zwar theoretisch das Array komplett in der richtigen Abfolge gespeichert wird, aber es werden immer nur die ersten 2 Items der internen Varible IV02 genutzt; dementsprechend werden diese immer wieder überschrieben.
Ich nahm an, dass dasvielleicht irgendwie an dem count Teil liegt? Aber ein ersetzen von count($seite) durch andere Variablen, welchen ich einen festen Wert (Anzahl der Items im Array) zugewiesen habe, hat nichts geändert. Es werden weiterhin irgendwie immer nur die ersten zwei Spalten der IV02 besetzt. Nun bin ich leider etwas ratlos....

1 Answer

0 votes
by SoSci Survey (327k points)

Im Prinzip reicht es Ihnen, wenn Sie den ersten Array-Eintrag speichern, oder?

foreach ($seiten as $i => $seite) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV02', $i + 1);
  // Hier den ersten Wert aus dem Array speichern
  put($id, $seite[0]);
}

Oder falls Sie lieber ein klassische FOR haben (gleiche Funktion):

for ($i=0; $i<count($seiten); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV02', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $seiten[$i][0]);
}
by s091065 (210 points)
Ja, das funktioniert jetzt! Toll, vielen Dank!
Ja genau, der erste Eintrag des Arrays reicht vollkommen, ist ja auch schöner so.

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

...