繁体   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