繁体   English   中英

按日期对数组进行分组,并将值设置为键

[英]Group array by date and set value as keys

我有这样的数组

 0 => 
array (size=3)
  'datetime_read' => '2017-07-16 20:45:08'
  'parameter_name' =>  'Rainfall Amount'
  'reading' => '0.00'

 1 => 
array (size=3)
  'datetime_read' =>  '2017-07-16 20:45:08'
  'parameter_name' =>  'Rainfall Intensity'
  'reading' =>  '0.0'

2 => 
array (size=3)
  'datetime_read' => '2017-07-16 20:45:08' 
  'parameter_name' => 'Air Pressure' 
  'reading' =>  '77.45' 

我需要按日期对数据进行分组,并获取参数名称和读取的值

 [0] => Array
        (
            'datetime_read' => '2017-07-16 20:45:08'
            'Rainfall Amount' => '0.00'
            'Rainfall Intensity' => '0.0'
            'Air Pressure' => '77.45'
        )

有多种方法可以解决此问题。 这就是我要解决的方法:

  1. 查找具有最大大小的数组,并编写一个循环,直到达到最大值
  2. 在循环外初始化一个新数组。 这将是最终的数组
  3. 每次遍历循环时,请检查所有这些数组的日期。 如果新数组中已经存在日期,则只需添加这些参数。 否则,您还必须在数组中添加日期。

试试这个(假设$input是您的输入):

$combined = array_reduce(
    $input,
    function (array $carry, array $item) {
        $datetimeRead = $item['datetime_read'];
        $parameterName = $item['parameter_name'];
        $reading = $item['reading'];

        $carry[$datetimeRead['datetime_read'] = $datetimeRead;
        $carry[$datetimeRead][$parameterName] = $reading;

        return $carry;
    },
    []
);

ksort($combined);

$data = array_values($combined);

供参考,请参阅:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM