問題:
給定一個嵌套的PHP 陣列,確定如何有效地提取特定鍵的最小值和最大值。
範例:
<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>
解例:
選項1:使用arraymin_column()min_ ()/max()
此方法利用array_column() 函數將「權重」值提取到數值數組中。然後使用 min() 和 max() 函數分別確定最小值和最大值。
<code class="php">$weights = array_column($array, 'Weight'); $minValue = min($weights); $maxValue = max($weights);</code>
選項 2:使用 array_map()
與選項 1 類似,此方法利用 array_map() 擷取「權重」值。但是,它需要自訂函數來執行映射。
<code class="php">$weights = array_map(function($item) { return $item['Weight']; }, $array); $minValue = min($weights); $maxValue = max($weights);</code>
選項3(已棄用):使用巢狀循環
不建議使用此方法,因為它是效率相對較低,特別是對於大型數組。
<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>
選項4:使用array_reduce()
此方法對於需要執行額外計算的特定場景很有用或在確定最小值或最大值時進行處理。
<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>
以上是如何有效率地找到嵌套 PHP 數組中的最小值和最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!