将字符串数据写入一个数组

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

我得到过去一小时的温度读数。数据以行的形式出现,每10分钟显示一次数据。

200504, 0530, 0, 262.3, 1.399, 6.097, 2.15, 
200504, 0540, 0, 251.2, 1.29, 6.08, 2.09,
200504, 0550, 0, 249.4, 1.685, 5.921, 2.44,
200504, 0600, 0, 249.5, 1.465, 5.904, 2.27,
200504, 0610, 0, 247.7, 1.801, 6.214, 2.61,
200504, 0620, 0, 246.9, 1.908, 6.532, 3.04,

需要计算行中最后一个元素的平均值。

$str = '190227, 2020, 9, 245.8, 2.886, 5.753, 0';

$pattern = '/([\S]*),\s([\S]*),\s([\S]*),\s([\S]*),\s([\S]*),\s([\S]*),\s([\S]*)/m';

preg_match($pattern, $str, $matches);

$result =  [
    "Date" =>  intval($matches[1]),
    "Time" =>  intval($matches[2]),
    "h" => intval($matches[3]),
    "Deg.M" => floatval($matches[4]),
    "m/s" => floatval($matches[5]),
    "deg.C" => floatval($matches[6]),
    "mm/h" => floatval($matches[7])
];

通过这个解决方案,我得到了一个时间间隔的数据,但我如何将所有这些数据写入一个数组并计算平均值?

php arrays php-7
1个回答
0
投票

你可以把它当作一个CSV(逗号分隔文件),实际上就是这样。

$lines = explode(PHP_EOL, $data);
$array = array_map('str_getcsv', $lines); 
print_r($array);

你可能会想用一个修剪和一些命名的键来装饰它,但这已经完成了大部分的工作 :)

然后,如果你想得到所有最后的值,然后把它们相加。

$values = array_column($array, 6);
$avg = array_sum($values)/count($values);
© www.soinside.com 2019 - 2024. All rights reserved.