php - 从多维数组中的元素获取最大值?

标签 php arrays max multidimensional-array

<分区>

我正在尝试为多维数组中的特定键选择最大值。我无法“找到”有问题的关键......

所以,数组(比我在这里发布的要长得多)

[0] => stdClass Object
    (
        [id] => 70
        [cust] => 4
        [dnum] => 1
        [upper] => Array
            (
                [0] => 66
            )

    )
[1] => stdClass Object
    (
        [id] => 43
        [cust] => 42
        [dnum] => 2
        [upper] => Array
            (
                [0] => 77
            )

    )
[2] => stdClass Object
    (
        [id] => 12
        [cust] => 3
        [dnum] => 0
        [upper] => Array
            (
                [0] => 99
            )

    )

我试图在整个数组中找到最大的“dnum”值,所以在这个例子中,$max = 2。我知道 max 函数允许我这样做,但我不确定如何引用 dnum 元素而不将整个元素放在 foreach 循环中,如果我这样做,那么 max 就不会是要使用的函数,对吧?

所以,我不能完全这样做:

$max = max($myarray[]->dnum);

有没有办法让我不必重新创建整个数组就可以做到这一点?

最佳答案

在 PHP 5.2 中,唯一的方法是遍历数组。

$max = null;
foreach ($arr as $item) {
  $max = $max === null ? $item->dnum : max($max, $item->dnum);
}

注意:我已将结果设为 0,因为如果所有 dnum 值都是负数,那么现在接受的解决方案将产生不正确的结果。你需要用一些合理的东西来播种最大值。

或者你可以使用 array_reduce() :

$max = array_reduce($arr, 'max_dnum', -9999999);

function max_denum($v, $w) {
  return max($v, $w->dnum);
}

在 PHP 5.3+ 中,您可以使用匿名函数:

$max = array_reduce($arr, function($v, $w) {
  return max($v, $w->dnum);
}, -9999999);

您也可以使用 array_map():

function get_dnum($a) {
  return $a->dnum;
}

$max = max(array_map('get_dnum', $arr));

关于php - 从多维数组中的元素获取最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2189479/

相关文章:

php - PHP如何截取多字节字符串(英文单词和汉字)?

php - 为什么即使在本地环境中,laravel 也会重定向到 https?

c++ - 堆分配函数撞墙 : EXC BAD ACCESS CODE 1

MySQL选择具有最大ID并匹配其他条件的行

php - 合并具有唯一属性的两行

php - 维基百科使用哪种维基标记解析器?

php - 这是让设计适合智能手机的好方法吗?

javascript - 如何将项目添加到嵌套数组?

c - 使 C 中的其他函数可以访问变量

java - 使用 Java 数组获取最小值和最大值