0

我正在研究 SMA(简单移动平均)函数 5 秒(从数组中逐个找到每 5 个值的最佳平均值)。
结果,我有超过 1000 个数组,但在这里我们只有 2 个。

 0 => array:5 [▼
        1608616431 => 54
        1608616432 => 71
        1608616433 => 79
        1608616434 => 75
        1608616435 => 100
      ]
      1 => array:5 [▼
        1608616432 => 71
        1608616433 => 79
        1608616434 => 75
        1608616435 => 100
        1608616436 => 99
      ]

我想从这些数组中找到平均值的最大值,然后我在它们上使用array_sum然后应用max函数。

对于上述数组,我们将有 avg 如下:

Avgs=[78.8,84.8]

所以最大值是:84.8

我需要数组的第一个键,最大值来自它,因为这个例子是1608616432

4

2 回答 2

0

这样做时array_sum(),您可以将结果写入索引数组,例如使用array_key_first().

然后在获取时,max()您可以使用array_search()找到与最大值匹配的(第一个)时间戳。

于 2021-03-01T14:51:57.397 回答
0

这个脚本会做你想要的

<?php

$array = [
    [
        '1608616431' => 54,
        '1608616432' => 71,
        '1608616433' => 79,
        '1608616434' => 75,
        '1608616435' => 100
    ],
    [
        '1608616432' => 71,
        '1608616433' => 79,
        '1608616434' => 75,
        '1608616435' => 100,
        '1608616436' => 99,
    ],
];

$elementAverage = [];
foreach ($array as $index => $element) {
    $average                                  = array_sum($element)/count($element);
    $elementArrayKeys                         = array_keys($element);
    $elementAverage[reset($elementArrayKeys)] = $average;
}

echo array_search(max($elementAverage), $elementAverage);

输出

1608616432

首先我们做$elementAverage然后得到最大平均值
然后只使用索引并得到我想要的

于 2021-03-01T15:19:05.603 回答