Liebes Support-Team,
mit Hilfe von arrays werden in meinem Projekt 6 Personen in 6 Runden 36 Aussagen zugeordnet. In einer Erweiterung sollen diese 36 Aussagen nun aber aus einem Aussagenpool von 72 Aussagen gezogen werden.
Die Funktion, die etwas ähnliches macht ist array_rand, allerdings scheint diese mit Zurücklegen zu arbeiten. Gibt es eine Option ohne Zurücklegen?
Vielen Dank,
Anne Römpke
// Inhalte in Arrays auflisten
$personen = array(
1 => '001.jpg',
2 => '002.jpg',
3 => '003.jpg',
4 => '004.jpg',
5 => '005.jpg',
6 => '006.jpg',
// etc.
);
$aussagen = array(
1 => 'G001',
2 => 'G002',
3 => 'G003',
4 => 'G004',
5 => 'G005',
6 => 'G006',
7 => 'G007',
8 => 'G008',
9 => 'G009',
10 => 'G010',
11 => 'G011',
12 => 'G012',
13 => 'G013',
14 => 'G014',
15 => 'G015',
16 => 'G016',
17 => 'G017',
18 => 'G018',
19 => 'G019',
20 => 'G020',
21 => 'G021',
22 => 'G022',
23 => 'G023',
24 => 'G024',
25 => 'G025',
26 => 'G026',
27 => 'G027',
28 => 'G028',
29 => 'G029',
30 => 'G030',
31 => 'G031',
32 => 'G032',
33 => 'G033',
34 => 'G034',
35 => 'G035',
36 => 'G036',
37 => 'G037',
38 => 'G038',
39 => 'G039',
40 => 'G040',
41 => 'G041',
42 => 'G042',
43 => 'G043',
44 => 'G044',
45 => 'G045',
46 => 'G046',
47 => 'G047',
48 => 'G048',
49 => 'G049',
50 => 'G050',
51 => 'G051',
52 => 'G052',
53 => 'G053',
54 => 'G054',
55 => 'G055',
56 => 'G056',
57 => 'G057',
58 => 'G058',
59 => 'G059',
60 => 'G060',
61 => 'G061',
62 => 'G062',
63 => 'G063',
64 => 'G064',
65 => 'G065',
66 => 'G066',
67 => 'G067',
68 => 'G068',
69 => 'G069',
70 => 'G070',
71 => 'G071',
72 => 'G072'
);
// Mischen dürfen wir nur einmal, daher isset()
if (!isset($orderP)) {
// Sechsmal die Personen
$orderP = array();
for ($i=0; $i<6; $i++) {
$keysP = array_keys($personen); // Erstmal die Nummer 1 bis 6 für die Personen ...
shuffle($keysP); // ... mischen
debug($keysP);
$orderP = array_merge($orderP, $keysP); // Und in eine Liste schreiben, die immer länger wird
}
// Dann noch die Aussagen
$orderA = array_keys($aussagen)($input, 5);
shuffle($orderA);
// Jetzt noch zwischenspeichern, damit es über 36 Seiten hinweg funktioniert
registerVariable($orderP);
registerVariable($orderA);
// Abfolge speichern
put('E001_01', implode(',', $orderP));
// zum Anzeigen im Debug Mode
$toShow = implode(',', $orderP);
debug($toShow);
put('E002_01', implode(',', $orderA));
// zum Anzeigen im Debug Mode
$toShow2 = implode(',', $orderA);
debug($toShow2);
// Automatische Seitenweiterleitung
if (!isset($time1)) {
$time1 = time();
registerVariable('time1'); // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = 336; // Der Teilnehmer hat 100 Sekunden Zeit zur Bearbeitung
if (time() >= $time1 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time1 + $timer - time();
replace('%remain%', $remain);
}
// Hier wird das Programm aus den Arrays nur noch "abgespult"
$i = loopPage(count($orderA));
// Person
debug($i);
debug($orderP);
html('<img src="'.$personen[$orderP[$i]].'" alt="">');
// Aussage
show($aussagen[$orderA[$i]]);