Heim  >  Artikel  >  Backend-Entwicklung  >  Wie finde ich den nächstgelegenen Wert in einem Array?

Wie finde ich den nächstgelegenen Wert in einem Array?

DDD
DDDOriginal
2024-11-26 21:49:14714Durchsuche

How to Find the Closest Value in an Array?

Nächste Werteübereinstimmung in einem Array

Bei einem Array von Werten und einem Zielwert besteht eine häufige Anforderung darin, den am nächsten passenden Wert abzurufen im Array. Dies kann sich als besonders nützlich erweisen, wenn es sich um ungenaue Daten handelt oder wenn keine genaue Übereinstimmung verfügbar ist.

Lösung:

Um den nächstmöglichen Übereinstimmungswert zu ermitteln, wird ein iterativer Suchalgorithmus verwendet eingesetzt werden kann. Hier ist eine PHP-Funktion, die diesen Ansatz implementiert:

function getClosest($search, $arr) {
    $closest = null;
    foreach ($arr as $item) {
        if ($closest === null || abs($search - $closest) > abs($item - $search)) {
            $closest = $item;
        }
    }
    return $closest;
}

Diese Funktion vergleicht iterativ den Zielwert mit jedem Element im Array. Es verwaltet eine $closest-Variable, um den gefundenen Wert mit der größten Übereinstimmung zu verfolgen. Bei jedem Vergleich wird die absolute Differenz zwischen dem Ziel und dem aktuellen Array-Element berechnet. Wenn die Differenz kleiner ist als die zuvor aufgezeichnete Differenz, wird die $nächste Variable aktualisiert.

Beispiel:

Verwendung des bereitgestellten Beispielarrays:

$array = [0, 5, 10, 11, 12, 20];

Die folgenden Suchvorgänge können durchgeführt werden:

  • getClosest(0, $array); // gibt 0 zurück
  • getClosest(3, $array); // gibt 5 zurück
  • getClosest(14, $array); // gibt 12 zurück

Durch die Iteration durch das Array und die Auswertung jedes Elements findet dieser Algorithmus effizient den Wert, der dem Ziel am nächsten kommt.

Das obige ist der detaillierte Inhalt vonWie finde ich den nächstgelegenen Wert in einem Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn