加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 快速查找多维数组中最大的数组?

发布时间:2020-12-13 21:50:51 所属栏目:PHP教程 来源:网络整理
导读:情况:我有一个具有可变数量元素的多维数组.例如 array(N) { 0 = array(3) { ... },1 = array(8) { ... },2 = array(1) { ... },... M = array(12) { ... },... N-1 = array(7) { ... }} 我想找到这个子数组中的最大元素数(在上面的例子中,它将是12).一个简
情况:我有一个具有可变数量元素的多维数组.例如

array(N) {
    0 => array(3) { ... },1 => array(8) { ... },2 => array(1) { ... },...
    M => array(12) { ... },...
    N-1 => array(7) { ... }
}

我想找到这个子数组中的最大元素数(在上面的例子中,它将是12).一个简单的解决方案是O(N)线性搜索.

<?php
function max_length($2d_array) {
    $max = 0;
    foreach($2d_array as $child) {
        if(count($child) > $max) {
            $max = count($child);
        }
    }
    return $max;
}

但是,我不禁想知道是否有一些聪明的技巧来优化这种查找.所以我的问题是两个部分(虽然任何一个部分的答案都会解决它):

>是否有一种算法比O(N)更快地执行此搜索而不需要特殊要求(预先排序等)?
>在某个地方是否存在一个模糊的PHP函数,它将在本机代码而不是我的用户态PHP脚本中执行此搜索?

解决方法

不确定性能,但我认为以下应该有效:

$count = array_map('count',$input_arr);
$min = array_keys($count,max($count))[0];
$largest_arr = $input_arr[$min];

甚至:

$counts = array_map('count',$input_arr);
$key = array_flip($counts)[max($counts)];
$largest_arr = $input_arr[$key];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读