0 votes
in SoSci Survey (dt.) by s137634 (700 points)

Guten Tag,

in meinem Skript werden mit folgendem Code vier Blöcke, die jeweils sechs Seitenkennungen enthalten, mithilfe von Shuffle randomisiert. Auch die Seitenkennungen werden randomisiert. Ich würde gerne in einer internen Variablen speichern, welche Seitenkennungen pro Block immer als letztes stehen.

Hier ist mein Skript:

// Erst einmal die Seitenkennungen als Arrays speichern
$Seq_GU = array (
'Seq_GU11' => array('s1GU1', 's2GU1', 's3GU1', 
                 's4GU1', 's5GU1', 's7GU1'),

'Seq_GU21' => array('s1GU2', 's2GU2', 's3GU2', 
                 's4GU2', 's5GU2', 's7GU2'),

'Seq_GU31' => array('s1GU3', 's2GU3', 's3GU3', 
                 's4GU3', 's5GU3', 's6GU3'),

'Seq_GU41' => array('s1GU4', 's2GU4', 's3GU4', 
                 's4GU4', 's5GU4', 's6GU4')
//GU1 = blau, GU2 = orange, GU3 = grün, GU4 = violett (Dummy-Bilder)
//s1 - s5 stehen für die Distraktoren, s6 für Target 1 und s7 für Target 2
);


// Den ersten Block aus dem Array $Seq_GU herausnehmen, etc.
$Seq_GU1 = array_shift($Seq_GU);
$Seq_GU2 = array_shift($Seq_GU);
$Seq_GU3 = array_shift($Seq_GU);
$Seq_GU4 = array_shift($Seq_GU);


//Speichern der Reihenfolge von Targets und Distraktoren in einer internen Variable

$indices1 = array_keys($Seq_GU1);
shuffle($indices1);
//Reihenfolge speichern (neben Position)
for ($i=0; $i<count($indices1); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV28', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices1[$i]);
}
registerVariable('indices1');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_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
  $Seq_GU_order1[$i] = $Seq_GU1[$indices1[$i]];
}

$indices2 = array_keys($Seq_GU2);
shuffle($indices2);
for ($i=0; $i<count($indices2); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV29', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices2[$i]);
}
registerVariable('indices2');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order2 = array();
for ($i=0; $i<count($indices2); $i++) {
  // Rang speichern wie oben
  $id = id('IV03', $indices2[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order2[$i] = $Seq_GU2[$indices2[$i]];
}

$indices3 = array_keys($Seq_GU3);
shuffle($indices3);
for ($i=0; $i<count($indices3); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV30', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices3[$i]);
}
registerVariable('indices3');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order3 = array();
for ($i=0; $i<count($indices3); $i++) {
  // Rang speichern wie oben
  $id = id('IV04', $indices3[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order3[$i] = $Seq_GU3[$indices3[$i]];
}

$indices4 = array_keys($Seq_GU4);
shuffle($indices4);
for ($i=0; $i<count($indices4); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV31', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices4[$i]);
}
registerVariable('indices4');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order4 = array();
for ($i=0; $i<count($indices4); $i++) {
  // Rang speichern wie oben
  $id = id('IV05', $indices4[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order4[$i] = $Seq_GU4[$indices4[$i]];
}

$Seq_GUNeu = [
  1 => $Seq_GU_order1,
  2 => $Seq_GU_order2,
  3 => $Seq_GU_order3,
  4 => $Seq_GU_order4
];
registerVariable('Seq_GUNeu');

$Seq_GU_order = array (
 $Seq_GU_order1,
 $Seq_GU_order2,
 $Seq_GU_order3,
 $Seq_GU_order4
);
// Die Schlüssel mischen, nicht das Array selbst
$indicesA = array_keys($Seq_GU_order);
shuffle($indicesA);

// Jetzt wieder Reihenfolge (der Gegenüberstellungen)
//speichern und ein gemischtes Array erzeugen
$Seq_GUMix = [];
for ($i=0; $i<count($indicesA); $i++) {
  // Rang speichern
  $id = id('IV13', $indicesA[$i] + 1);

registerVariable('Seq_GUMix');

debug($i);
debug($indicesA);
debug($id);
debug($indicesA[$i]);

  put($id, $i + 1);
  // Teil-Array speichern
  $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
}

setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
}

Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (302k points)

welche Seitenkennungen pro Block immer als letztes stehen.

Sie haben die Seitenkennungen ja in $Seq_GU1 bis $Seq_GU4 - und speichern diese dann in IV28*, IV01* u.s.w.

Eigentlich sollte in IV28_06 bereits stehen, welche Seite in Block 1 als letztes angezeigt wird?!

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

...