dedlfix: Spoilerwarnung: Lösung

Beitrag lesen

Tach!

$sonnenzeiten = array
  (
  array("Sonnenaufgang",1428465059),
  array("Sonnenfrühstück",1428479459),
  array("Mittagssonne",1428487259),
  array("Nachmittagssonne",1428498059),
  array("Abendsonne",1428498059),
  array("Sonnenuntergang",1428519599)
  );
$jetzt = 1428504659;

$result = array_reduce($sonnenzeiten, function ($prev, $item) use ($jetzt) {
	if ($prev === null) // erster Durchlauf
		return $item;
	
	$diffPrev = abs($prev[1] - $jetzt);
	$diffItem = abs($item[1] - $jetzt);
	
	return $diffPrev < $diffItem ? $prev : $item;
}));

Ergebnis ist das Array mit der Abendsonne. Bei gleichen Werten (wie bei Nachmittag und Abend) oder gleichem Abstand gewinnt der später kommende Wert.

dedlfix.