Guten Tag,
für meinen Fragebogen wollte ich für die Auswertung in eine interne Variable speichern, welches Item ein Teilnehmer zuletzt erkannt und mit "ja" beantwortet hat.
In der Studie bekommt der Teilnehmer sechs Seiten mit jeweils einer Frage präsentiert. Die Fragen lassen sich jeweils mit "ja" (1) oder der Ausweichoption "nein" (-1) beantworten. Die Reihenfolge der Seiten wird durch ein Array und mithilfe von shuffle randomisiert. Ich habe mich an dieser Seite hier orientiert
https://www.soscisurvey.de/help/doku.php/de:create:variables
(unter: "Variablen dauerhaft verwenden")
und nach der Randomisierung das Array mit
shuffle($indices1);
registerVariable('indices1');
für künftige PHP-Code Elemente verfügbar gemacht (das passiert auf Seite 12 des Fragebogens).
Auf Seite 48 habe ich dann den Code unten eingefügt (unten ist ein kleiner Ausschnitt davon zu sehen). Dort war meine Logik, den Befehl "array_shift" zu nutzen um nach und nach die sechs Seitenkennungen aus dem randomisierten Array zu nehmen.
Danach sollte jeweils geprüft werden, welche Seitenkennung von den sechsen vorliegt. Anhand der Seitenkennung kann das Skript dann prüfen, ob die entsprechende Frage auf der Seite mit "ja" oder "nein" beantwortet wurde und bei einem "ja" die ursprüngliche Position der Frage (1 bis 6) in eine interne Variable schreiben. Das hat den Hintergrund, dass mich nur die letzte "ja"-Antwort des Probanden interessiert und vorherige überschrieben werden dürfen. Diese hätte ich gerne für die spätere Auswertung zur Verfügung.
Allerdings wird in die interne Variable nichts hinein geschrieben. Das Programm beschwert sich auch nicht, dass Fehler im Code sind. Deswegen wäre meine Vermutung, dass es die Seitenbezeichnungen oder Variablennamen in den "if-Bedingungen" nicht richtig auslesen kann.
Mir ist zudem bewusst, dass es sicherlich einen deutlich effizienteren Weg gibt, das ganze zu programmieren, als alle möglichen Kombinationen aufzuschreiben. Mein Vorwissen im Programmieren ist aber nicht groß genug dafür.
Können Sie mir dennoch weiterhelfen?
$Showup = array (
'Showup11' => array('s1GU1', 's2GU1', 's3GU1',
's4GU1', 's5GU1', 's7GU1'),
'Showup21' => array('s1GU2', 's2GU2', 's3GU2',
's4GU2', 's5GU2', 's7GU2'),
'Showup31' => array('s1GU3', 's2GU3', 's3GU3',
's4GU3', 's5GU3', 's6GU3'),
'Showup41' => array('s1GU4', 's2GU4', 's3GU4',
's4GU4', 's5GU4', 's6GU4')
);
// Den ersten Block aus dem Array $Showup herausnehmen, etc.
$Showup1 = array_shift($Showup);
$Showup2 = array_shift($Showup);
$Showup3 = array_shift($Showup);
$Showup4 = array_shift($Showup);
//Speichern der Reihenfolge von Targets und Distraktoren in einer internen Variable
$indices1 = array_keys($Showup1);
shuffle($indices1);
registerVariable('indices1');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Showup_order speichern
$Showup_order1 = array();
for ($i=0; $i<count($indices1); $i++) {
// Rang speichern wie oben
$id = id('IV01', $indices1[$i] + 1);
put($id, $i + 1);
// Seite in der Abfolge speichern
$Showup_order1[$i] = $Showup1[$indices1[$i]];
}
$Position11 = array_shift($indices1);
$Position12 = array_shift($indices1);
$Position13 = array_shift($indices1);
$Position14 = array_shift($indices1);
$Position15 = array_shift($indices1);
$Position16 = array_shift($indices1);
//Position 11
if (
($Position11) == 's1GU1')
{
if (
(value('SG01') == 1)) {
put('IV08_01', 1);
}
}
elseif (
($Position11) == 's2GU1')
{
if (
(value('SG02') == 1)) {
put('IV08_01', 2);
}
}
elseif (
($Position11) == 's3GU1')
{
if (
(value('SG03') == 1)) {
put('IV08_01', 3);
}
}
elseif (
($Position11) == 's4GU1')
{
if (
(value('SG16') == 1)) {
put('IV08_01', 4);
}
}
elseif (
($Position11) == 's5GU1')
{
if (
(value('SG04') == 1)) {
put('IV08_01', 5);
}
}
elseif (
($Position11) == 's6GU1')
{
if (
(value('SG21') == 1)) {
put('IV08_01', 6);
}
}
Das würde jetzt für die anderen 5 Elemente des Arrays (Position12 - Position16) entsprechend wiederholt werden.