【问题标题】:Getting an array key using the max() function使用 max() 函数获取数组键
【发布时间】:2011-10-27 11:28:20
【问题描述】:

我正在使用 max() 函数来查找数组中的最大值。我需要一种方法来返回该值的键。我试过使用 array_keys() 函数,但我能做的就是返回数组中最大的键。必须有一种方法可以做到这一点,但 php 手册没有提及任何内容。

这是我正在使用的代码示例:

$arrCompare = array('CompareOne' => $intOne,
                    'CompareTwo' => $intTwo,
                    'CompareThree' => $intThree,
                    'CompareFour' => $intfour);

$returnThis = max($arrCompare);

我可以成功获取数组的最大值,只是无法获取关联的键。有什么想法吗?


编辑:澄清一下,使用它是行不通的:

$max_key = max( array_keys( $array ) );

这会比较键并且对数组中的值不做任何事情。

【问题讨论】:

  • array_keys() 对您没有帮助似乎很奇怪。
  • @Dor:使用array_keys比较键值。

标签: php


【解决方案1】:

array_search 函数会帮助你。

$returnThis = array_search(max($arrCompare),$arrCompare);

【讨论】:

    【解决方案2】:

    如果您需要源数组中最大值的所有键,您可以这样做:

    $keys = array_keys($array, max($array));
    

    【讨论】:

    • 更喜欢这个,虽然它可能不如array_search()那么明显。我什至不知道array_keys 可以将$search_value 作为第二个参数!
    • 这返回了第二个最高密钥。我选择了这个答案,这在我的情况下有效:stackoverflow.com/questions/6126066/…
    【解决方案3】:

    不是单行的,但它会执行所需的任务。

    function max_key($array)
    {
        $max = max($array);
        foreach ($array as $key => $val)
        {
            if ($val == $max) return $key;
        }
    }
    

    来自http://cherryblossomweb.de/2010/09/26/getting-the-key-of-minimum-or-maximum-value-in-an-array-php/

    【讨论】:

    • 不要在每次循环迭代中重新计算 max($array) - 我非常怀疑 PHP 运行时是否足够聪明,可以将其提升到循环之外
    • @Adam:哇。谢谢一堆。我不敢相信我在阅读时错过了它!
    • 我对此进行了测试,它可以工作,但有点冗长。我将采用 Miro 的解决方案,但还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多