一尘不染

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

php

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

因此,数组(比我在这里发布的要冗长得多)

[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);

有没有办法让我不必重新创建整个数组?


阅读 457

收藏
2020-05-29

共1个答案

一尘不染

$max = 0;
foreach($array as $obj)
{
    if($obj->dnum > $max)
    {
        $max = $obj->dnum;
    }
}

如果您的最大数字不是负数(负数,空数组和0将返回最大值为0),则该函数将正常工作。

因为您使用的对象可以具有自定义的属性/结构,所以我不认为实际上可以使用任何“预定义”功能来获取它。也可以只使用foreach循环。

您真的无法摆脱foreach循环,因为即使内部函数也使用foreach循环,它也只是在幕后。

另一个解决方案是

$numbers = array();
foreach($array as $obj)
{
    $numbers[] = $obj->dnum;
}
$max = max($numbers);
2020-05-29