PHP 一种在 array_sum 之后找到密钥的方法

PHP a way to find the key after array_sum

我正在研究 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 函数。

对于上述数组,我们将得到如下的平均值:

Avgs=[78.8,84.8]

所以最大值是:84.8

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

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

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

此脚本将完全按照您的要求执行

<?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然后得到最大平均值
然后就用索引得到我想要的