使用php通过高阶函数求最小值

ql3eal8s  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(106)

我试图找到数组中的最小值,但它没有返回最小值,它只对最大值有效。
代码:

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人
但输出是180
你能解释一下为什么吗?!

iezvtpos

iezvtpos1#

代码说明

如果最小值较小,则必须先检查是否为空,然后再设置最小值。

<?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()函数来实现此目的:

$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

相关问题