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!