0 votes
in SoSci Survey (dt.) by s183177 (230 points)

Hallo,

in meinem Experiment lasse ich eine Aufgabe (Rangzuordnung, 99 Items auf 5 Plätze) mehrfach hintereinander durchführen. Damit nicht die gleichen Kombinationen eingereicht werden, habe ich folgenden php-Code, der mit jeder Aufgabenwiederholung natürlich länger wird (hier werden die Werte von der ersten (R001) mit der zweiten Wiederholung (R002) verglichen). Gibt es eine einfache Lösung zur Kürzung?

$fail=((((value('R001_01') >= 1) AND (value('R002_01') >= 1)) OR ((value('R001_01') < 1) AND (value('R002_01') < 1))) AND (((value('R001_02') >= 1) AND (value('R002_02') >= 1)) OR ((value('R001_02') < 1) AND (value('R002_02') < 1))) AND (((value('R001_03') >= 1) AND (value('R002_03') >= 1)) OR ((value('R001_03') < 1) AND (value('R002_03') < 1))) 
... etc. bis 
AND (((value('R001_99') >= 1) AND (value('R002_99') >= 1)) OR ((value('R001_99') < 1) AND (value('R002_99') < 1))));

Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (305k points)

Damit nicht die gleichen Kombinationen eingereicht werden ...

Ehrlich gesagt kann ich Ihren Code nicht so ganz nachvollziehen, vor allem die >= in der Bedingung ... deshalb beginne ich mal mit einem anderen Ansatz. Und zwar sollte Ihnen valueList() ein eindeutiges Array pro Kombination liefern. Der Einfachheit halber mache ich daras einen String via implode().

$fragen = ['R001', 'R002'];
$kombis = [];
foreach ($fragen as $frage) {
  $a = array_values(valueList($frage));
  debug($a);
  $c = implode('-', $a);
  debug($c);
  if (in_array($c, $kombis)) {
    repeatPage();
  } else {
    $kombis[] = $c;
  }
}

Bei diesem Code ändert sich lediglich die erste Zeile.

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

...