Danke für die Antwort... leider klappt es noch nicht.
1. Problem: Wenn keine Option auf die >101 oder <101 zutrifft, nimmt er durch die shuffel Funktion einfach irgendwelche Items. Dies passiert nicht, wenn statt 3 nur 2 oder 1 Items darauf zutreffen.
Die ein oder zwei höchsten Items werden angezeigt, aber dann bekomme ich zusätzlich diesen Fehler:
Fehler im Fragebogen: Undefined offset: 2
Zeile: 8
PHP-Code
005 arsort($values);
006
007 $order = array_keys($values);
008 $threshold = $values[$order[2]];
009 $greater = array();
010 $equal = array();
011 foreach ($values as $varID => $value) {
Fehler im Fragebogen: Undefined index:
Zeile: 8
PHP-Code
005 arsort($values);
006
007 $order = array_keys($values);
008 $threshold = $values[$order[2]];
009 $greater = array();
010 $equal = array();
011 foreach ($values as $varID => $value) {
Mein gesamter PHP Code für die pos. Items lautet:
$posItems = getItems('EN06', '>', 101);
$values = valueList('EN06', $posItems);
arsort($values);
$order = array_keys($values);
$threshold = $values[$order[2]];
$greater = array();
$equal = array();
foreach ($values as $varID => $value) {
$itemID = (int)ltrim(substr($varID, 5), "0");
if ($value > $threshold) {
$greater[] = $itemID;
} elseif ($value == $threshold) {
$equal[] = $itemID;
}
}
shuffle($equal);
$needed = 3 - count($greater);
$items = array_merge($greater, array_slice($equal, 0, $needed));
question('EN11', $items);
Bei den neg. Items schaut es anders aus. Seltsamerweise...
Wenn ich hier nur 2 oder 1 Item im Bereich unter 101 habe, wird mir NUR der Fehler angezeigt und nicht mehr die beiden Items, die aber im relevanten Bereich wären. Der PHP Code lautet:
$negItems = getItems('EN06', '<', 101);
$values = valueList('EN06', $negItems);
asort($values);
$order = array_keys($values);
$threshold = $values[$order[2]];
$greater = array();
$equal = array();
foreach ($values as $varID => $value) {
$itemID = (int)ltrim(substr($varID, 5), "0");
if (($value < $threshold) && ($value > 0)) {
$greater[] = $itemID;
} elseif ($value == $threshold) {
$equal[] = $itemID;
}
}
shuffle($equal);
$needed = 3 - count($greater);
$items = array_merge($greater, array_slice($equal, 0, $needed));
question('EN11', $items);
Somit ergeben sich 3 Themen:
1. Das Ausspucken von Werten, wenn es eigentlich keine gültigen Werte gibt (Shuffelfunktion) und
2. Die Fehlermeldung beim den positiven Werten
3. die Fehlermeldung bei den neg. Werten und dass dort gar nichts angezeigt wird.