Vielen Dank für die schnelle Antwort!
Ich habe Ihren Code übernommen und etwas angepasst (IV06 ist bereits woanders vergeben. Deswegen ist hier IV13 implementiert). Das sieht nun wie folgt aus:
$Showup = array (
'Showup11' => array('s1GU1', 's2GU1', 's3GU1',
's4GU1', 's5GU1', 's6GU1'),
'Showup21' => array('s1GU2', 's2GU2', 's3GU2',
's4GU2', 's5GU2', 's6GU2'),
'Showup31' => array('s1GU3', 's2GU3', 's3GU3',
's4GU3', 's5GU3', 's7GU3'),
'Showup41' => array('s1GU4', 's2GU4', 's3GU4',
's4GU4', 's5GU4', 's7GU4')
//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 $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);
// 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]];
}
$indices2 = array_keys($Showup2);
shuffle($indices2);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Showup_order speichern
$Showup_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
$Showup_order2[$i] = $Showup2[$indices2[$i]];
}
$indices3 = array_keys($Showup3);
shuffle($indices3);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Showup_order speichern
$Showup_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
$Showup_order3[$i] = $Showup3[$indices3[$i]];
}
$indices4 = array_keys($Showup4);
shuffle($indices4);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Showup_order speichern
$Showup_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
$Showup_order4[$i] = $Showup4[$indices4[$i]];
}
$Showup_order = array (
'1_Showup' => $Showup_order1,
'2_Showup' => $Showup_order2,
'3_Showup' => $Showup_order3,
'4_Showup' => $Showup_order4
);
// Die Schlüssel mischen, nicht das Array selbst
$indicesA = array_keys($Showup_order);
shuffle($aKeys);
// Jetzt wieder Reihenfolge speichern und ein gemischtes Array erzeugen
$ShowupMix = [];
for ($i=0; $i<count($indicesA); $i++) {
// Rang speichern
$id = id('IV13', $indicesA[$i] + 1);
put($id, $i + 1);
// Teil-Array speichern
$ShowupMix[$i] = $Showup_order[$indicesA[$i]];
}
setPageOrder($ShowupMix[0], 'S2', $ShowupMix1, 'S3', $ShowupMix[3], 'S4', $ShowupMix[4], 'GK' );
}
Es werden mir allerdings folgende Fehlermeldungen ausgegeben:
"Für die Funktion put() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben"
"In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten."
"Fehler im Fragebogen: shuffle() expects parameter 1 to be array, null given"