0 votes
in SoSci Survey (dt.) by s066535 (275 points)
edited by SoSci Survey

Liebes Forum

Ich möchte gern folgendes tun. Der Proband sieht auf der ersten Seite "rec" eine Rangordnungsaufgabe mit 12 Kästchen. Die Kästchen enthalten einen Buchstaben oder eine Zahl. Der Proband soll nun die Buchstaben auf eine bestimmte Position der Ränge ziehen, zB "A" auf Rang1, "B" auf Rang2 etc.

Zu jeder Aufgabe gibt es eine eindeutige Lösung. Gerne möchte ich nun dem Probanden jeweils auf der zweiten Seite "feedback" zurückmelden, wieviele Antworten richtig waren.

Dazu habe ich auf Seite 1 "rec" die Aufgaben in Arrays geschrieben, sowie ein Array für die korrekten Antworten, und mit looppage jeweils bis zur "feedback" Seite durchgeloopt:

//Seite "enc"

$recU1 = array(
0=>array('U105'),
1=>array('U106'),
2=>array('U107'),
3=>array('U108')
);
registerVariable($recU1);

$solutions = array(
'U105' => array('U105_01' => 1, 'U105_01' => 2),  
'U106' => array('U106_08' => 1, 'U106_03' => 2),
'U107' => array('U107_02' => 1, 'U107_04' => 2, 'U107_11' => 3),
'U108' => array('U108_10' => 1, 'U108_06' => 2, 'U108_09' => 3),
);

$i = loopToPage('feedback', 4);
$set2 = $recU1[$i];
question($set2[0]);

Wie könnten die Antworten nun am einfachsten mit den Lösungen verglichen und zusammengezählt werden, ohne jedes Item abfragen zu müssen?

//Seite zwei "feedback"
$values = valueList($recU1[$i]);
$solutions_points[$i] = 0;

//Lösungen mit Antwort abgleichen und zusammenzählen
foreach ();

//Summenvariable in bestimmte interne Variable speichern und anzeigen lassen
put('IV01_[$i]', $solutions_points[$i]);
html('<p> Anzahl richtiger Antworten: '.$solutions_points[$i].' </p>');

Vielen Dank

1 Answer

0 votes
by SoSci Survey (306k points)

Wie könnten die Antworten nun am einfachsten mit den Lösungen verglichen und zusammengezählt werden, ohne jedes Item abfragen zu müssen?

Die jeweils relevante Liste bekommen Sie wie folgt:

$i = loopIndex();
$frage = $recU1[$i];
$solution = $solutions[$frage];

Wenn Sie die Variable $solution haben, können Sie die Punkte einfach abzählen, wie in der Anleitung beschrieben: Punkte für Antworten zählen

In Ihrem Beispiel also z.B.

$points = 0;
foreach ($solution as $varID => $cor) {
  if (value($varID) == $cor) {
    $points++;
  }
}
by s066535 (275 points)
Besten Dank. Ich erhalte so eine Fehlermeldung "Illegal offset type", welche auf die Zeile
$solution = $solutions[$frage];
hinweist. Ist dies möglicherweise deswegen, weil zB bei der Frage U105 zwei Antworten (ob U105_01' => 1 und 'U105_01' => 2) abgeglichen werden müssen?
by SoSci Survey (306k points)
In der Variable $frage steht evtl. nicht das, was Sie planen. Lassen Sie sich das mit debug($frage) einmal anzeigen.

> $frage = $recU1[$i];

Vermutlich steht in $frage ein Array, denn Sie haben ja diese Definition:

$recU1 = array(
0=>array('U105'),
1=>array('U106'),
2=>array('U107'),
3=>array('U108')
);

Entsprechend könnten Sie auf die Frage-ID mit einem zusätzlichen [0] zugreifen:

$frage = $recU1[$i][0];
by s066535 (275 points)
Super, vielen Dank.

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

...