Vielleicht hier noch einmal zur Übersicht. So sah der Code vorher aus, wo in der internen Variablen IV13 die Position der Gegenüberstellung gespeichert wurde:
//aufteilen nach Bedingung
//Prüfen, ob sequentiell oder simultan vorliegt
//bei simultan:
if (
(value('RA01') == 1) or
(value('RA01') == 2) or
(value('RA01') == 3) or
(value('RA01') == 4)
) {
//Bestimmung der Reihenfolge der Gegenüberstellungen
// Erst einmal die Seitenkennungen als Array speichern
$order_Sim_GU4 = array( 'GU1', 'GU2', 'GU3', 'GU4' );
//GU1 = blau, GU2 = orange, GU3 = grün, GU4 = violett
//Seiten mischen
$indices = array_keys($order_Sim_GU4);
shuffle($indices);
//speichert die Reihenfolge der Gegenüberstellungen in IV12
$order_Sim_GU4mix = array();
for ($i=0; $i<count($indices); $i++) {
$id = id('IV12', $indices[$i] + 1);
put($id, $i + 1);
$order_Sim_GU4mix[$i] = $order_Sim_GU4[$indices[$i]];
}
// Die erste Seite aus dem Array $pages herausnehmen
$first = array_shift($order_Sim_GU4mix);
// Die zweite Seite aus dem Array $pages herausnehmen
$second = array_shift($order_Sim_GU4mix);
// Die dritte Seite aus dem Array $pages herausnehmen
$third = array_shift($order_Sim_GU4mix);
//Arrays mit der jeweils ausgewürfelten ersten, zweiten
//und dritten Seite erstellen
$order_Sim_GU1 = array( $first);
$order_Sim_GU2 = array( $second);
$order_Sim_GU3 = array( $third);
// Jetzt das Ergebnis noch als Seitenabfolge festlegen
//Arrays und dazwischenliegende "Start"-Seiten ('S2' - 'S4') anordnen
setPageOrder($order_Sim_GU1, 'S2', $order_Sim_GU2, 'S3', $order_Sim_GU3, 'S4', $order_Sim_GU4mix, 'GK' );
}
// S2 - S4 sind die Startseiten bevor eine GÜ losgeht
//Prüfen, ob sequentiell oder simultan vorliegt
//bei sequentiell:
else {
//Für Target-absent Bedingung 1 (also in Seq_GUs 1 und 2 wird Target_2
//und in Seq_GUs 3 und 4 Target_1 präsentiert)
if (
(value ('RA02') == 1)) {
// 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 Positionen (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($Seq_GUMix);
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' );
}
// <-Hier kamen dann noch fünf weitere solcher if-Schleifen, durch die diese Frage aber
// zu lang würde
;}
So hat der Code auch ohne Probleme funktioniert. als ich aber in den jeweiligen if-Schleifen unter
// Jetzt wieder Positionen (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($Seq_GUMix);
folgendes
//Reihenfolge der Gegenüberstellungen speichern
for ($i=0; $i<count($indicesA); $i++) {
// Kennung der internen Variable aus Frage-Kennung plus Index erstellen
$id = id('IV52', $i + 1);
// Hier den Wert aus dem Array speichern
put($id, $indicesA[$i]);
}
hinzugefügt habe, traten all die Probleme auf. Was müsste ich tun um in der internen Variablen IV52 zusätzlich noch die Reihenfolge zu speichern?