如何有效率地找到嵌套 PHP 數組中的最小值和最大值?

Barbara Streisand
發布: 2024-10-26 15:04:02
原創
398 人瀏覽過

How to Efficiently Find Minimum and Maximum Values in a Nested PHP Array?

從PHP 陣列擷取最小值和最大值

問題:

給定一個嵌套的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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!