Fangen wir mal mit der Reihenfolge der Vogelarten an ... am einfachsten machen Sie das, indem Sie die Seitenabfolge mischen, vgl. setPageOrder()
Nun ist die Frage, ob es Ihnen wichtig ist, dass alle Kominationen aller Audio-Files (6 hoch 6 = sehr viele) getestet werden sollen (oder eine systematische Auswahl daraus, vgl. lateinisches Quadrat) oder ob es Ihnen ausreicht, das zufällig/unabhängig zu mischen. Vorsicht: Bei zufälliger Mischung kann es passieren (unwahrscheinlich aber möglich), dass die erste Amsel-Datei immer zusammen mit der ersten Finken-Datei präsentiert wird.
Wenn Sie unabhängig mischen möchten, dann legen Sie einfach pro Vogen einen Zufallsgenerator an und spielen die gezogene Datei ab.
Update
Wie unten in den Kommentaren zu entnehmen, bezog sich die obige Antwort auf die Präsentation von einer Audio-Datei pro Teilnehmer und Vorgelart. Tatsächlich sollten aber alle Audio-Dateien für jeden Teilnehmer abgespielt werden.
Hier nochmals der vollständige PHP-Code dafür inkl. Mischen der Audiodateien - aber so, dass die Reihenfolge der Vogelarten bei allen Durchgängen eines Interviews gleich bleibt.
function shuffle_assoc($list) {
if (!is_array($list)) return $list;
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $list[$key];
}
return $random;
}
$audio = array(
'Stieglitz' => array(
'Stieglitz-1.mp3' => 'A01',
'Stieglitz-2.mp3' => 'A02',
'Stieglitz-3.mp3' => 'A03',
'Stieglitz-4.mp3' => 'A04',
'Stieglitz-5.mp3' => 'A05',
'Stieglitz-6.mp3' => 'A06'
// u.s.w.
),
'Meise' => array(
'Meise-1.mp3' => 'B01',
'Meise-2.mp3' => 'B02',
'Meise-3.mp3' => 'B03',
'Meise-4.mp3' => 'B04',
'Meise-5.mp3' => 'B05',
'Meise-6.mp3' => 'B06'
// u.s.w.
),
'Schwalbe' => array(
'Schwalbe-1.mp3' => 'C01',
'Schwalbe-2.mp3' => 'C02',
'Schwalbe-3.mp3' => 'C03',
'Schwalbe-4.mp3' => 'C04',
'Schwalbe-5.mp3' => 'C05',
'Schwalbe-6.mp3' => 'C06'
// u.s.w.
),
'Ammer' => array(
'Ammer-1.mp3' => 'D01',
'Ammer-2.mp3' => 'D02',
'Ammer-3.mp3' => 'D03',
'Ammer-4.mp3' => 'D04',
'Ammer-5.mp3' => 'D05',
'Ammer-6.mp3' => 'D06'
),
'Buschrohrsaenger' => array(
'Buschrohrsaenger-1.mp3' => 'E01',
'Buschrohrsaenger-2.mp3' => 'E02',
'Buschrohrsaenger-3.mp3' => 'E03',
'Buschrohrsaenger-4.mp3' => 'E04',
'Buschrohrsaenger-5.mp3' => 'E05',
'Buschrohrsaenger-6.mp3' => 'E06'
),
'Amsel' => array(
'Amsel-1.mp3' => 'F01',
'Amsel-2.mp3' => 'F02',
'Amsel-3.mp3' => 'F03',
'Amsel-4.mp3' => 'F04',
'Amsel-5.mp3' => 'F05',
'Amsel-6.mp3' => 'F06',
),
);
if (!isset($mixed)) {
foreach (array_keys($audio) as $key) {
$audio[$key] = shuffle_assoc($audio[$key]);
}
$mixed = shuffle_assoc($audio);
registerVariable($mixed);
}
$i = loopPage(36);
$roundNo = (int)floor($i / 6);
$vogelNo = $i - 6 * $roundNo;
$vogelKeys = array_keys($mixed);
$vogelKey = $vogelKeys[$vogelNo];
$vogel = $mixed[$vogelKey]; // Liste der Audiodateien pro Vogel
$audioKeys = array_keys($vogel);
$audioFile = $audioKeys[$roundNo];
html('<h1>'.$audioFile.'</h1>');
html('
<div style="margin: 3em; text-align: center">
<audio controls src="'.$audioFile.'" alt="" />
</div>
');