Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:create:functions:valuelist [13.10.2018 14:47] – admin | de:create:functions:valuelist [11.05.2019 13:47] – admin | ||
---|---|---|---|
Zeile 40: | Zeile 40: | ||
<code php> | <code php> | ||
$codes = valueList(' | $codes = valueList(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Items mit der höchsten Bewertung ===== | ||
+ | |||
+ | Ein anderes Anwendungsbeispiel für '' | ||
+ | |||
+ | Nehmen wir als Beispiel eine Batterie aus Schiebreglern (Frage vom Typ // | ||
+ | |||
+ | Mit '' | ||
+ | |||
+ | <code php> | ||
+ | $values = valueList(' | ||
+ | arsort($values); | ||
+ | </ | ||
+ | |||
+ | In der Variable '' | ||
+ | |||
+ | ^Schlüssel^Wert^ | ||
+ | |SR01_07| | ||
+ | |SR01_02| | ||
+ | |SR01_04| | ||
+ | |SR01_15| | ||
+ | |SR01_10| | ||
+ | |SR01_11| | ||
+ | |SR01_05| | ||
+ | |SR01_14| | ||
+ | |...| ...| | ||
+ | |||
+ | **Vorsicht: | ||
+ | |||
+ | Für dieses Beispiel sollen immer genau drei Items abgefragt werden, es muss also zufällig eines der beiden Items ausgewählt werden. Das ist nicht ganz trivial. Dafür wird die Liste in drei Teile geteilt: Items, die einen höheren Wert als das dritte Item ('' | ||
+ | |||
+ | <code php> | ||
+ | $order = array_keys($values); | ||
+ | $threshold = $values[$order[2]]; | ||
+ | $greater = array(); | ||
+ | $equal = array(); | ||
+ | foreach ($values as $varID => $value) { | ||
+ | $itemID = (int)ltrim(substr($varID, | ||
+ | if ($value > $threshold) { | ||
+ | $greater[] = $itemID; | ||
+ | } elseif ($value == $threshold) { | ||
+ | $equal[] = $itemID; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Zur Erklärung von '' | ||
+ | |||
+ | Zur Erklärung vin '' | ||
+ | |||
+ | Das Mischen der Liste '' | ||
+ | |||
+ | <code php> | ||
+ | shuffle($equal); | ||
+ | $needed = 3 - count($greater); | ||
+ | $items = array_merge($greater, | ||
+ | </ | ||
+ | |||
+ | Die Liste $items enthält nun die Nummern der Top 3 Items, also entweder '' | ||
+ | |||
+ | <code php> | ||
+ | question(' | ||
+ | </ | ||
+ | |||
+ | Der gesamte PHP-Code sieht dann wie folgt aus. | ||
+ | |||
+ | <code php> | ||
+ | $values = valueList(' | ||
+ | arsort($values); | ||
+ | |||
+ | $order = array_keys($values); | ||
+ | $threshold = $values[$order[2]]; | ||
+ | $greater = array(); | ||
+ | $equal = array(); | ||
+ | foreach ($values as $varID => $value) { | ||
+ | $itemID = (int)ltrim(substr($varID, | ||
+ | if ($value > $threshold) { | ||
+ | $greater[] = $varID; | ||
+ | } elseif ($value == $threshold) { | ||
+ | $equal[] = $varID; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | shuffle($equal); | ||
+ | $needed = 3 - count($greater); | ||
+ | $items = array_merge($greater, | ||
+ | |||
+ | question(' | ||
</ | </ |