2015-02-23 48 views
-1

我有一个放在一起的数组。它基本上是7个站点的24个数据点。每个工作站每小时都有一个数据点,并为每个数据点创建一个新的子数组。现在的问题是,我现在想基于站点分割数据,所以我可以对其进行分类。当我去做array_filter不适合我。我想基本上将每个子数组中具有相同行0结果的所有值组合在一起。但保留每个数据点基于它们。第0行是电台名称。这是一个数组看起来像什么的例子。有160个子阵列。我需要做的就是根据站名将它们组合在一起。我打算基于Array值来做这件事,但问题是如果数据点丢失,它会打破逻辑。如何合并基于第一个值的子数组php

Array 
(
    [0] => Array 
    (
     [0] => STATIONONE 
     [1] => 02/22/15 04:00:00 PM 
     [2] => SW 
     [3] => Array 
      (
       [0] => 4.51 
      ) 

     [4] => MPH 
     [5] => Array 
      (
       [0] => 16.1 
      ) 

     [6] => MPH 
    ) 

    [1] => Array 
    (
     [0] => STATIONONE 
     [1] => 02/22/15 05:00:00 PM 
     [2] => S 
     [3] => Array 
      (
       [0] => 2.7 
      ) 

     [4] => MPH 
     [5] => Array 
      (
       [0] => 9.61 
      ) 

     [6] => MPH 
    ) 

它只是一直重复,直到我有23个值。然后下一站。

所以0-22子阵值=站1 23-45子阵值=站2

等。只是说明,以帮助展示什么,我试图做的。

+0

你能解释哪个是你的输出吗? – 2015-02-24 03:28:00

回答

0

接受的答案让我接近了解这一点。我不得不通过电台来做这件事。所以我创建了7个foreach语句并为每个站创建了一个数组。这样我可以根据需要将数组合并在一起。

# Parse our All Data and set station 
foreach ($array as $entry) { 
    if ($entry[0] === "STATIONONE"){ 
    $S1pkwsite = ($entry[0]); 
    $S1pkwvalue = ($entry[5][0]); 
    $S1pkwdate = ($entry[1]); 
    $S1pkwunit = ($entry[6]); 
    $S1wspvalue = ($entry[3][0]); 
    $S1wspunit = ($entry[4]); 
    $S1wdrvalue = ($entry[2]); 
    $S1pkwdataarray[] = array('SiteName'=>$S1pkwsite,'DATE'=>$S1pkwdate,'WDR'=>$S1wdrvalue,'VALUE'=>$S1pkwvalue,'UNIT'=>$S1pkwunit); 
    } 
    } 


array_push ($Stationone_data, $pkwdataarray); 

$Stationone_data = array_shift($Stationone_data); 
0

这是不完全清楚,你希望你的输出为,但这可能让你有:

$entriesByStation = [] 
foreach ($entries as $entry) { 
    $entriesByStation[$entry[0]] = $entry; 
} 

这将组中的所有$entriesByStation数组中的条目站名

+0

非常感谢,我试图弄清楚如何重新生成数组,以便我可以合并所有具有相同行0值的子数组。所以我只有7个子阵列。 – GuitarGeek86 2015-02-24 15:57:01

相关问题