【问题标题】:maximum index in an array [closed]数组中的最大索引[关闭]
【发布时间】:2012-12-16 06:39:28
【问题描述】:

我有这个数组:

$number= array(

                array([0]=>2,[1]=>2)
                array([0]=>2,[1]=>2,[2]=>2,[3]=>2)
                array([0]=>2,[1]=>2,[2]=>2)
                array([0]=>2,[1]=>2)
)

我想要这个数组中的最大索引。这个数组是 4.

【问题讨论】:

  • 其中一个内部数组的最大元素数为 4,最大索引为 3。您尝试了什么?
  • 是的,我想要最大元素
  • 最大 number 个元素或最大元素?
  • 最大元素数
  • 用一个简单的for循环就可以实现,你试过什么?

标签: php mysql arrays max


【解决方案1】:

你的意思可能是这样的:

echo max(array_map('count', $number));

【讨论】:

  • 我会这样做,但是...纯代码答案在 Stackoverflow 上的价值很低,因为它们对教育/授权成千上万的未来研究人员几乎没有作用。即使是最简单的解决方案也应该附有计划的英文解释。
【解决方案2】:

编写一个遍历数组的循环。对于数组中的每个数组,获取该数组中的元素数,如果它大于迄今为止的最大值(例如,$max),则将 $max 设置为元素数。然后,当您完成对数组的循环时,$max 会给出您的答案。

【讨论】:

    【解决方案3】:

    此代码经过测试并适用于您的阵列。当然,带有 count 函数的 array_map 是维度 1 最大计数的最佳解决方案

    <?php
        $number= array(
    
                        array(0=>2,1=>2),
                        array(0=>2,1=>2,2=>2,3=>2),
                        array(0=>2,1=>2,2=>2),
                        array(0=>2,1=>2),
        );
    
        $ak = array_values($number);
        for($i;$i<count($number);$i++){
        $c[] = count($ak[$i]);
        }
        echo max($c);
        ?>
    

    【讨论】:

    • 数组 ( [0] => 数组 ( [0] => 1353507690, 1353595005,1353507690, [日期字符串] => 1353507690, 1353595005,1353507690, [1] => 2012-11-21 [ rpt_date] => 2012-11-21 ) [1] => 数组 ([0] => 1353595005, 1353595005 [datestring] => 1353595005, 1353595005 [1] => 2012-11-22 [rpt_date] => 2012- 11-22 ) [2] => Array ( [0] => 1353854205, 1353853290,1353854205, ,1353854205, 1353854205 [datestring] => 1353854205, 1353853290,1353854205, ,1353854205, 1353854205 [1] => 2012-11- 25 [rpt_date] => 2012-11-25 ))
    • 您的方法与@xdazz 建议的方法有何不同?
    • array_map 仅计算数组的级别 1 使用此块您也可以编辑其他级别。例如,您要计算 $array[a][b][c][d],想想如果你需要计算位于级别 4 或维度 4 的“d”的最大计数 array_pop 在此不起作用。
    【解决方案4】:

    你可以试试下面的代码:

    $data = array(
        "apples" =>
            array("red", "yellow", "pineapples","enam"),
        "bananas" =>
            array("small", "medium", "big","enam","enam"),
        "vegs" =>
            array("potatoes", "carrots", "onions")
    );
    
    foreach($data as $in_arr){
        $count = count($in_arr);
        if($count>$max)$max = $count;
    }
    echo "The max:".$max;    
    

    【讨论】:

    • “试试这个”的答案在 Stackoverflow 上的价值很低,因为它们对教育/授权成千上万的未来研究人员几乎没有作用。
    【解决方案5】:

    使用 count() 函数:

    $max = count($number); // returns 4
    

    更新

    你的问题不够清楚。提供的 cmets 和答案表明您希望获取数组中存在的元素数量,这些元素的元素多于 $number 数组中的其他数组。在这种情况下,@xdazz 答案是最适合您的答案。像这样编写$number 数组会更好、更正确:

    $number = array(
        array(1, 2),
        array(1, 2, 3, 4, 5),
        array(1, 2, 3),
        array(1, 2)
    );
    

    【讨论】:

    • 这行不通,也不在我的脑海里。 :(
    • @BOGUSBOGUS:从你的问题中不清楚你没有要求这个。改进你的问题!你要求的也是微不足道的。
    • @BOGUSBOGUS 看看更新。
    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 2020-10-25
    • 2021-10-23
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多