簡體   English   中英

使用 php 通過高階函數查找最小數

[英]Find min number by higher order functions using php

我試圖找到數組中的最小值,但它不返回最小值,它只適用於最大值。

代碼:

function maxNumber($acc, $val) {

    return $acc > $val ? $acc : $val;

}

function minNumber($acc, $val) {

    return $acc < $val ? $acc : $val;

}

$nums = [5, 12, 1, 50, 2, 180, 90, 45];

echo array_reduce($nums, "maxNumber");
echo "</br>";
echo array_reduce($nums, "minNumber");

結果應該是:180 1

但是 output 是 180

你能解釋一下為什么嗎?!

解釋你的代碼

您必須先檢查 null,然后再設置最小值(如果較小)。

<?php
function maxNumber($acc, $val) {
    return $acc > $val ? $acc : $val;
}

function minNumber($min, $val) {
    if ((is_numeric($min) && $val < $min) || $min == null) {
        $min = $val;
    }
    return $min;    
}

$nums = [5, 12, 1, 50, 2, 180, 90, 45];

echo array_reduce($nums, "maxNumber");
echo "</br>";
echo array_reduce($nums, "minNumber", 0);

您可以為此使用min()max() function:

$nums = [5, 12, 1, 50, 2, 180, 90, 45];
echo min($nums);
echo '#';
echo max($nums);
// output: 1 # 180

分鍾(): https://www.php.net/manual/en/function.min.php

最大(): https://www.php.net/manual/de/function.max.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM