Php 在数组中查找最大值

Php 在数组中查找最大值,php,arrays,loops,multidimensional-array,Php,Arrays,Loops,Multidimensional Array,我的要求是在数组中找到最大/最大值,其中可能包含其他数组。例如,我们可以看看下面的数组 $array = array( 13, array(10, 4, 111, 3), 4, array(23, 450, 12,array(110, 119, 20, 670), 45 ,45,67,89), ); $max = find_max($array, 0); print "Maximumum Value is

我的要求是在数组中找到最大/最大值,其中可能包含其他数组。例如,我们可以看看下面的数组

$array =
    array(
        13,
        array(10, 4, 111, 3),
        4,
        array(23, 450, 12,array(110, 119, 20, 670), 45 ,45,67,89),
        );

$max = find_max($array, 0);

print "Maximumum Value is  $max";
我已经有了一个工作函数find_max,但我只想知道除了下面给出的代码之外,最有效的方法是什么

function find_max($array, $maxValue) {
    foreach ($array as $member) {
        if (is_array($member)) {
            $maxValue = find_max($member, $maxValue);
        } else {

            if($member==$maxValue){
                continue;
            }
            if ($member > $maxValue) {
                $maxValue = $member;
            }
        }
    }
    return $maxValue;
}

您无法找到比O(n)或更快的数组(或数组数组)的最大值

如果您需要不断找到这个数组的最大值,我建议您对数组进行排序,或者尽可能使用不同的(排序的)数据结构


您还可以保留对max的引用,并在插入数据时进行更新。显然,这是假设您自己插入数据,而不是从其他地方获取数据,在这种情况下,我的最后一条评论对您来说是无用的。

实际上,您所做的是在多维数组中搜索最大值的最佳方法。利用递归查找深度并检查更大的数字。很抱歉,没有内置函数来执行此操作

这是一种基于最内部数组对多维数组进行排序的复杂方法,但这是一个相当复杂的概念。(搜索它)


usort可能有用?

查找最大值需要O(n),因此据我所知,您无法大幅改进它。 但是,您可以在代码中添加一个小的改进:

function find_max($array, $maxValue) {
    foreach ($array as $member) {
        if (is_array($member)) {
            $maxValue = find_max($member, $maxValue);
        } else {
            if ($member > $maxValue) {
                $maxValue = $member;
            }
        }
    }
    return $maxValue;
}

$array =
array(
    13,
    array(10, 4, 111, 3),
    4,
    array(23, 450, 12,array(110, 119, 20, 670), 45 ,45,67,89),
    );
$ans = find_max($array, 0);
echo "ans = $ans";

输出:670

有一个“max”函数,它也接受数组,但我认为它只适用于一维数组,不确定:-在本页的注释中,您还可以找到多维数组的解决方案。我知道max函数,它不适用于这种情况;如果我没有错,它会抛出一个通知“数组到字符串转换”。关于评论,我已经看过并执行了。我在看是否有更好的解决办法。