【问题标题】:How to get array min value如何获取数组最小值
【发布时间】:2020-03-24 17:21:06
【问题描述】:

我有一个多维数组,我需要得到一个最小值。

数组可能是[65,4,4,511,5,[[54,54[.[.[..].].]]等等。

示例代码

<?php 

$arr = [5, 1 , 2, 3, [1,5,59,47,58,[0,12,562]]];
function NumMin($arr)
{
    $num = '';
    foreach ($arr as $item => $i) {
        if(is_array($i)){
            NumMin($i);
        }
        else{
                $num .= $i.',';

            }
    }


    $num .= $num;
    return $num;

}
$g = NumMin($arr);
var_dump($g);

我需要得到0

【问题讨论】:

  • 使用here 中的技术展平数组,然后使用min() 找到数组中的最小值
  • 例如:$min = min(...new RecursiveIteratorIterator(new RecursiveArrayIterator($input)));

标签: php arrays algorithm


【解决方案1】:
<?php 

$GLOBALS["min"] = 999999; //min value int
$arr = [[[5,6],7],9,7,5, 1 , 2, 3, [1,5,59,47,58,[1,12,562]]];
array_walk_recursive($arr, 'NumMin');

function NumMin($item)
{
    if(intval($item) <= intval($GLOBALS["min"]))
    {
        $GLOBALS["min"] = intval($item); 
    }


}
// The end, $GLOBALS["min"] will have the least value

回声 $GLOBALS["min"]; ?>

【讨论】:

  • It doesn't works。在你的情况下应该是 1 作为输出。
  • 对不起,不要初始化为 0,而是初始化为 99999(非常大的数字)
【解决方案2】:

您可以使用array_walk_recursive() 函数来展平给定的数组(使其成为一维)。

然后简单地使用min() 函数来获得所需的输出。

array_walk_recursive($arr, function($v) use (&$res){
    $res[]=$v; 
});

echo min($res);

Demo

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 2023-03-18
    • 2023-01-05
    • 2013-09-20
    • 2013-10-13
    • 2017-05-24
    • 2011-09-01
    • 2020-08-07
    • 2019-12-25
    相关资源
    最近更新 更多