当前位置: 首页 > 面试题库 >

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

归鸿朗
2023-03-14
问题内容

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

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

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

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


问题答案:
$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);


 类似资料:
  • 问题内容: 我正在寻找一种确定JavaScript数组中哪个元素的出现次数最多的优雅方法(mode)。 例如,在 该元素是最常见的元素。 问题答案: 这只是模式。这是一个 快速的,未优化的 解决方案。它应该是O(n)。

  • 我正在使用ChartJS创建一个历史图表。我需要过滤30天前的数组值 我有一个值如下的数组: 该阵列具有大量内容,每天每小时包含多达5个月以上的值 这是我目前在ChartJS脚本中标签的php代码: 标签代码: 结果: 然而,我有困难的时候,我如何才能得到每天的最大价值,同时/匹配我的标签代码。 数据代码: 我的预期结果应该是过去30天的最大值: 例子: 结果:

  • 我有几个维度的多维矩阵,其中中的每个元素都是一个单独的传感器输入,是时间。我想做的是只分析中每个元素在上的峰值,因此我将得到一个的二维矩阵,其中只包含最大值。 我知道有很多方法可以获得单个整体最大值,但是有没有一种方法可以将它与逐个元素的操作相结合,比如,这样它就可以通过检查每个单独的元素? 如果你能给我任何帮助,我将感激不尽,因为我现在真的被困住了。提前谢谢!

  • 我正在尝试获取给定数组中的最大元素,以下是要求: > var obj={key:[1,2,4]}; 有人能给我解释一下为什么当我把 在IF函数的末尾,我得到了错误:如果属性不存在,应该返回未定义。但是当我把它放在IF函数的开头时,它毫无问题地通过了。

  • 问题内容: 我试图从基于值的多维数组中删除元素。在这种情况下,如果子数组的键“ year”的值为2011,则我希望该子数组消失。 仅作记录:我正在运行PHP 5.2。 我的数组如下所示: 问题答案: 尝试这个: 然后,您将这样称呼它:

  • 我有一个python问题,我对这方面还不熟悉,想知道我缺少了什么。 我想做的事情是打印一个嵌套的元组,但从内到外。 例如:应打印为null,A,B,C 所有元组的最大大小为2。 我在考虑使用递归函数来实现这一点;我有这个密码,但我不知道怎么了。 我不是在问这个问题的答案(那太好了),但如果你能告诉我代码出了什么问题,我将不胜感激。 有人吗?有什么想法吗? 谢谢