Heim >Backend-Entwicklung >PHP-Tutorial >Wie finde ich effizient Minimal- und Maximalwerte in einem verschachtelten PHP-Array?
Problem:
Bestimmen Sie anhand eines verschachtelten PHP-Arrays, wie es effizient geht Extrahieren Sie die Mindest- und Höchstwerte für einen bestimmten Schlüssel.
Beispiel:
<code class="php">$array = [ [ 'id' => '20110209172713', 'Date' => '2011-02-09', 'Weight' => '200', ], [ 'id' => '20110209172747', 'Date' => '2011-02-09', 'Weight' => '180', ], [ 'id' => '20110209172827', 'Date' => '2011-02-09', 'Weight' => '175', ], [ 'id' => '20110211204433', 'Date' => '2011-02-11', 'Weight' => '195', ], ];</code>
Lösung:
Option 1: Verwenden von array_column() und min()/max()
Diese Methode nutzt die Funktion array_column(), um die „Gewicht“-Werte in ein numerisches Array zu extrahieren. Anschließend werden die Funktionen min() und max() verwendet, um den Minimal- bzw. Maximalwert zu ermitteln.
<code class="php">$weights = array_column($array, 'Weight'); $minValue = min($weights); $maxValue = max($weights);</code>
Option 2: Verwendung von array_map()
Ähnlich wie Option 1 verwendet diese Methode array_map(), um die „Gewichtung“-Werte zu extrahieren. Es ist jedoch eine benutzerdefinierte Funktion erforderlich, um die Zuordnung durchzuführen.
<code class="php">$weights = array_map(function($item) { return $item['Weight']; }, $array); $minValue = min($weights); $maxValue = max($weights);</code>
Option 3 (veraltet): Verwendung verschachtelter Schleifen
Diese Methode wird in ihrer jetzigen Form nicht empfohlen relativ ineffizient, insbesondere bei großen Arrays.
<code class="php">$minValue = INF; $maxValue = -INF; foreach ($array as $item) { if ($item['Weight'] < $minValue) { $minValue = $item['Weight']; } if ($item['Weight'] > $maxValue) { $maxValue = $item['Weight']; } }</code>
Option 4: Verwenden von array_reduce()
Diese Methode ist für bestimmte Szenarien nützlich, in denen Sie zusätzliche Berechnungen durchführen müssen oder Verarbeitung bei der Ermittlung des Minimal- oder Maximalwerts.
<code class="php">$minValue = array_reduce($array, function($min, $item) { return min($min, $item['Weight']); }, PHP_INT_MAX); $maxValue = array_reduce($array, function($max, $item) { return max($max, $item['Weight']); }, -PHP_INT_MAX);</code>
Das obige ist der detaillierte Inhalt vonWie finde ich effizient Minimal- und Maximalwerte in einem verschachtelten PHP-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!