dedlfix: Prioritäten vergeben nach Werten

Beitrag lesen

echo $begrueszung;

Das mit min() und max() hat schon ein wenig geholfen, dankesehr! Ich habe nun eine Lösung aber die ist mir ehrlich gesagt immernoch wesentlich zu lang und unschick...

Das ist wirklich sehr umständlich... :-)

Nachdem du die Differenzen ermittelt hast, hat dein Array $difference 4 Werte in der Form:

$difference = array(
  up => 26,
  down => 2,
  left => 3,
  right => 42);

Das musst du nur mit einer passenden Array-Sortier-Funktion (siehe Kapitel Array-Funktionen im PHP-Handbuch), bei der die Zuordnung zwischen Schlüssel und Wert erhalten bleibt, sortieren. Dann bekommst du das:

$difference = array(
  down => 2,
  left => 3,
  up => 26,
  right => 42);

Dann gehst du mit foreach über diese Schlüssel-Wert-Paare und lässt dabei einen Zähler hochzählen, den du als Wert für den korrespondierenden Schlüssel in $priority zuweist.

$prio = 1;
foreach ($sorted_difference as $key => $value) {
  $priority[$key] = $prio;
  $prio++;
}

oder auch noch kürzer dafür aber etwas undurchsichtiger:

foreach (array_keys($sorted_difference) as $prio => $key)
  $priority[$key] = $prio + 1;

echo "$verabschiedung $name";