Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
de:create:functions:valuelist [11.05.2019 13:41] – admin | de:create:functions:valuelist [11.06.2019 15:37] – admin |
---|
| |
| |
===== Die Items mit der höchsten Bewertung ===== | ===== Items mit der höchsten Bewertung ===== |
| |
Ein anderes Anwendungsbeispiel für ''valueList()'' ist die Auswahl von Items ... und zwar nicht mit einem fixen Kriterium wie bei ''[[:de:create:functions:getitems]]'', sondern z.B. die drei Items mit den höchsten Bewertungen. | Ein anderes Anwendungsbeispiel für ''valueList()'' ist die Auswahl von Items ... und zwar nicht mit einem fixen Kriterium wie bei ''[[:de:create:functions:getitems]]'', sondern z.B. die drei Items mit den höchsten Bewertungen. |
$equal = array(); | $equal = array(); |
foreach ($values as $varID => $value) { | foreach ($values as $varID => $value) { |
$itemID = (int)ltrim(substr($varID, 4), "0"); | $itemID = (int)ltrim(substr($varID, 5), "0"); |
if ($value > $threshold) { | if ($value > $threshold) { |
$greater[] = $varID; | $greater[] = $itemID; |
} elseif ($value == $threshold) { | } elseif ($value == $threshold) { |
$equal[] = $varID; | $equal[] = $itemID; |
} | } |
} | } |
Zur Erklärung von ''$threshold'': Die Variable ''$order'' enthält die Schlüssel des Arrays ''$values''. Damit kann man gezielt den Schlüssel des dritten Werts (Index 2) in der sortierten Liste abrufen. ''$order[2]'' wäre hier also "SR01_04" und wenn man diesen Schlüssel aus ''$values'' abruft, bekommt man im Beispiel die ''59''. | Zur Erklärung von ''$threshold'': Die Variable ''$order'' enthält die Schlüssel des Arrays ''$values''. Damit kann man gezielt den Schlüssel des dritten Werts (Index 2) in der sortierten Liste abrufen. ''$order[2]'' wäre hier also "SR01_04" und wenn man diesen Schlüssel aus ''$values'' abruft, bekommt man im Beispiel die ''59''. |
| |
Zur Erklärung vin ''$itemID'': Wir benötigen ja nicht die komplette Variablen-Kennung (z.B. "SR01_01"), sondern nur die Nummer des Items, also z.B. ''1''. Dafür entnehmen wir zunächst mittels ''substr()'' aus "SR01_01" alles ab der fünften Position (Index 4) und dann wird mittels ''ltrim()'' noch die führende "0" entfernt, damit PHP den Text "1" anschließend mittels ''(int)'' in die Zahl ''1''. | Zur Erklärung vin ''$itemID'': Wir benötigen ja nicht die komplette Variablen-Kennung (z.B. "SR01_01"), sondern nur die Nummer des Items, also z.B. ''1''. Dafür entnehmen wir zunächst mittels ''substr()'' aus "SR01_01" alles ab der sechsten Position (Index 5), also "01", und dann wird mittels ''ltrim()'' noch die führende "0" entfernt, damit PHP den Text "1" anschließend mittels ''(int)'' in die Zahl ''1''. |
| |
Das Mischen der Liste ''$equal'' erfolgt mittels ''shuffle()''. Und aus dieser Liste benötigen wir drei minus die Anzahl Elemente aus der Liste ''$greater'', ermittelt via ''count()''. | Das Mischen der Liste ''$equal'' erfolgt mittels ''shuffle()''. Und aus dieser Liste benötigen wir drei minus die Anzahl Elemente aus der Liste ''$greater'', ermittelt via ''count()''. |
$itemID = (int)ltrim(substr($varID, 4), "0"); | $itemID = (int)ltrim(substr($varID, 4), "0"); |
if ($value > $threshold) { | if ($value > $threshold) { |
$greater[] = $varID; | $greater[] = $itemID; |
} elseif ($value == $threshold) { | } elseif ($value == $threshold) { |
$equal[] = $varID; | $equal[] = $itemID; |
} | } |
} | } |