返回包含密钥

时间:2015-10-14 07:47:21

标签: php arrays preg-grep

我有这个数组$allYearData
现在我想将它分成12个部分,按月分开 所以我使用带有preg_grep()循环的PHP foreach来搜索数据。

foreach($allYearData as $key){
    $janData[] = preg_grep("/^2015-01-.*$/", $key);
}

如何获取每个密钥中的所有数据?
正如你在$janData中看到的那样,我得到没有命中的空键。然后只有受到重击的日期。

我希望$janData成为一个新的数组,其中包含键0以包含该键中的第一个匹配和所有数据/值。和$ allYearData一样,但只有来自preg_grep的命中。

$ allYEarData:

Array ( 
  [0] => Array ( 
    [id] => 7811
    [objekt_element] => 23050-121-1_3105
    [objekt_nr] => 23050-121-1
    [element_nr] => 3105
    [vart] => B.Avf
    [vem] => Blå
    [anteckn] => 
    [datum] => 2015-09-29 18:00:19
  ) 
  [1] => Array ( 
    [id] => 7812
    [objekt_element] => 23050-121-1_3107
    [objekt_nr] => 23050-121-1
    [element_nr] => 3107
    [vart] => B.Avf
    [vem] => Blå
    [anteckn] =>
    [datum] => 2015-09-29 18:00:22
  )
  [2]...

$ janData

Array ( 
  [0] => Array ( )
  [1] => Array ( )
  [2] => Array ( )
  [3] => Array ( )
  [4] => Array ( )
  [5] => Array (
    [datum] => 2015-01-16 04:17:01
  )
  [6] => Array ( 
    [datum] => 2015-01-16 04:16:57 
  )
  [7]

我想要填写$ janData

Array ( 
  [0] => Array ( 
    [id] => 7811
    [objekt_element] => 23050-121-1_3105
    [objekt_nr] => 23050-121-1
    [element_nr] => 3105
    [vart] => B.Avf
    [vem] => Blå
    [anteckn] => 
    [datum] => 2015-01-16 18:00:19
  ) 

1 个答案:

答案 0 :(得分:1)

你在foreach中的$ key是数组,所以选择你要点击的日期在哪里,并使用$ key添加到结果数组。

foreach($allYearData as $key){
    if (preg_grep("/^2015-01-.*$/", $key['datum']){     
        $janData[] = $key;
    }
}