将平面数组拆分为 N 个元素的组/块,然后对每个组求和

问题描述 投票:0回答:1

我需要从以下数组中获取有效的时间戳:

$arrkeys = array(
    "t" => [
        1442238840,60,120,180,240,300,360,420,480,540,600,660,720,780,840,900,960,
        1442239860,60,120,180,240,300,360,420,480,540,600,660,720,780,840,900,960,
        1442240880,60,120,180,240,300,360,420,480,540,600,660,720,780,840,900,960
    ]
);

我需要将第一个有效时间戳

1442238840
与以下17个数字相加,以获得正确的时间戳,然后,第二个时间戳
1442239860
,依此类推...

示例:

1442238840 + 60;
1442238840 + 120;
1442238840 + 180;
etc... 

我不知道我该怎么做, 我尝试过的一些事情:

尝试1

//Pseudo-code
foreach($arrkeys["t"] as $t){

    if(strlen($t) < 10){
        //Search for the first valid timestamp and sum?
    }

}

尝试2

//Not working.
$array_size = 17; 

/* I know that every 17 (counting from 0) have a  valid timestamp. 
    so that 0 = 1st valid timestamp, 20 = 2nd valid timestamp. */

for ($i = 0; $i < $array_size; $i++) { 
    do {
        echo $i;
    } while ($i > 0);

我不知道我是否采用正确的方法来解决这个问题,我不知道如何有效地做到这一点,或者至少做到这一点。

有什么建议吗?

php arrays loops sum grouping
1个回答
5
投票

我喜欢你尝试不同的事情。那就好!

您尝试自己解决问题,

array_chunk()
在这里会给您很大帮助,因为您可以将数组分成 17 个元素的组,然后使用
array_sum()
将每组 17 个元素相加,例如

$result = array_chunk($arrkeys["t"], 17);
$result = array_map("array_sum", $result);
© www.soinside.com 2019 - 2024. All rights reserved.