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 Sosci-Survey-Team,
ich habe die letzten Wochen versucht den Code für unsere Umfrage fertigzustellen, allerdings ohne Erfolg. Da uns mit der Umfrage langsam die Zeit davonläuft, würde ich mich sehr über Ihre Hilfe freuen!
Das Ziel ist es aus 8 Vignetten (VD22 - VD29) jedem Befragten 4 randomisierte Vignetten auf einzelnen Seiten zu präsentieren. Mit dem untenstehenden Code soll es laut einer anderen Supportanfrage funktionieren, allerdings erhalte ich immer eine Fehlermeldung („Undefined array key 0“) in der Zeile „$code = $sets[$i];“. Ich kann die Fehlermeldung nicht beheben und habe mit anderen Codes entweder nur 1 randomisierte Vignette oder nacheinander viermal dieselbe Vignette auf 4 Einzelseiten. Ich brauche aber wie gesagt nacheinander 4 randomisierte auf 4 Einzelseiten.

$sets = valueList('VD21');
$i = loopPage(count($sets));
$code = $sets[$i];

if ($code == 1) {
question('VD22');
} elseif ($code == 2) {
question('VD23');
} elseif ($code == 3) {
question('VD24');
} elseif ($code == 4) {
question('VD25');
} elseif ($code == 5) {
question('VD26');
} elseif ($code == 6) {
question('VD27');
} elseif ($code == 7) {
question('VD28');
} elseif ($code == 8) {
question('VD29');
}
ago in SoSci Survey (dt.) by s234785 (110 points)

1 Answer

0 votes

allerdings erhalte ich immer eine Fehlermeldung („Undefined array key 0“) in der Zeile „$code = $sets[$i];“.

Hintergrund ist, dass die Funktion valueList() als Schlüssel für das Array die Variablennamen verwendet. Also nicht

[
  0 => 2,
  1 => 4,
  2 => 1,
  3 => 3
]

sondern

[
  'VD21x1' => 2,
  'VD21x2' => 4,
  'VD21x3' => 1,
  'VD21x4' => 3
]

Die einfachse Lösung wäre diese hier:

$sets = valueList('VD21');
$code = loopPage($sets);

Etwas länger, aber ebenso funktional:

$sets = array_values(valueList('VD21'));
$i = loopPage(count($sets));
$code = $sets[$i];

Und hier noch der ultimative Tipp zur Fehlersuche, wenn die Variablen nicht das machen, was man erwartet:

$sets = valueList('VD21');
debug($sets);
ago by SoSci Survey (251k points)
Perfekt endlich funktioniert es, vielen lieben Dank!
...