如何从多个数组生成单个数组

时间:2014-08-29 20:31:41

标签: php arrays

我使用过array_merge();但是对于某些共振并不是我需要它的方式...所以我有多个数组,其信息几乎与以下相同......

$array1 = array (
           '2014-06-01'=> array (
                          'date'=> '2014-06-01',
                          't1'=> 20,
                          't2'=> 5
                         );
           '2014-06-02'=> array (
                          'date'=> '2014-06-02',
                          't1'=> 20,
                         );
           '2014-06-03'=> array (
                          'date'=> '2014-06-03',
                          't1'=> 9,
                          't2'=> 2
                         );
         );
$array2 = array (
           '2014-07-01'=> array (
                          'date'=> '2014-07-01',
                          't1'=> 4,
                          't2'=> 1
                         );
           '2014-07-02'=> array (
                          'date'=> '2014-07-02',
                          't1'=> 6,
                          't2'=> 3
                         );
           '2014-07-03'=> array (
                          'date'=> '2014-07-03',
                          't1'=> 9,
                         );
         );

这就是我如何将我的数组用于一个目的,但是我不想构建另一个查询以获得具有几乎相同信息的另一个数组,而是想知道如何从这些数组构建另一个数组或3个类似的数组...

我想要获得的最终数组是这样的......

$final_arr = array (
         '01' => array (
                 't2_m_jun'=>5,
                 't2_m_jul'=>1,
          );
         '02' => array (
                 't2_m_jun'=>0,
                 't2_m_jul'=>3,
          );
         '03' => array (
                 't2_m_jun'=>2,
                 't2_m_jul'=>0,
          );
   );

现在,01,02,03等等是1到30或31的日期,具体取决于月份,所以从每个数组我都需要日期,如果索引是2014-06-01我只需要01并且从中我需要t2的值,并且对于第二个数组是相同的,以便我可以将来自t2的新键和值放在一起... ...

我不是很好的构建功能或使用数组,这就是我需要你帮助的原因 感谢您抽出宝贵时间阅读我的帖子。

1 个答案:

答案 0 :(得分:1)

好吧,首先你需要将它们与array_merge放在一起,然后遍历它并构建新数组。这应该可以解决问题:

$new_array = array_merge($array1, $array2);
$final_arr = array();
foreach($new_array as $val) {
    $timestamp = strtotime($val['date']);
    $day = date('d', $timestamp);
    if(empty($final_arr[$day])) {
        $final_arr[$day] = array();
    }

    $month = strtolower(date('M', $timestamp));
    $final_arr[$day]['t2_m_'.$month] = $val['t2'];
}