簡體   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