2015-09-04 45 views
0

我已经使用Google来做到这一点,但我认为我缺乏一些东西来使其工作,合并后我将它保存到csv文件或MySQL数据库。如何将数组合并到2d数组中php

这是示例数据:

01 2015-09-03 08:01 
01 2015-09-03 11:03 
01 2015-09-03 13:15 
01 2015-09-03 17:12 
07 2015-09-03 08:15 
07 2015-09-03 17:06 
01 2015-09-04 08:05 
01 2015-09-04 11:03 

我想所得阵列是这样它保存到csv文件之前:基于元素的数量

01 | 2015-09-03 | 08:01 | 11:03 | 13:15 | 17:12 
07 | 2015-09-03 | 08:15 | 17:06 
01 | 2015-09-04 | 08:05 | 11:03 

创建的报头它有。我想这样的代码:

foreach($line as $value){ 
fputcsv($converted,$value,"\t");//write the new array to csv 
} 
+0

我张贴的foreach循环的一个。 –

+0

是日期时间和id三个不同的列? –

+0

是它的一个多维数组。 –

回答

1

可以使用explode函数将字符串转换为数组:

$categories = []; 

foreach($lines as $line) { 
    $array = explode(' ', $line); 

    // Then you can store your data using column 1 and 2 as a key 
    $key = $array[0] . $array[1]; 
    $categories[$key][] = $array; 
} 

// finally, you can go through the $categories array 
foreach ($categories as $category) { 
    $csv = [$category[0][0], $category[0][1]]; 
    foreach ($category as $value) { 
    $csv[] = $value; 
    } 
    fputcsv($handle, $csv); 
} 

的增值经销商的命名是可怕的,但我希望你的想法:)

+0

我会尝试一下代码,它看起来会解决我的问题。 –

0

试试这个。

<?php 
$lines = " 
01 2015-09-03 08:01 
01 2015-09-03 11:03 
01 2015-09-03 13:15 
01 2015-09-03 17:12 
07 2015-09-03 08:15 
07 2015-09-03 17:06 
01 2015-09-04 08:05 
01 2015-09-04 11:03 
"; 
$line_array = explode("\n", $lines); 

$csv_line_array = array(); 
$csv = 0; 
$time = ""; 
for ($i = 0; $i < sizeof($line_array); $i++) { 
    if ($i < (sizeof($line_array) - 1)) { 
     if (substr($line_array[$i], 0, 13) == substr($line_array[$i + 1], 0, 13)) { 
      $time = $time . " | " . substr($line_array[$i + 1], 14, 5); 
      $csv_line_array[$csv] = $line_array[$i] . " | " . $time; 
      $csv++; 
     } else { 
      $time = substr($line_array[$i + 1], 14, 5); 
      $csv_line_array[$csv] = $line_array[$i]; 
     } 
    } 
} 
$csv_line_array2 = array(); 
for ($i = 0; $i < sizeof($csv_line_array); $i++) { 
    if ($i < (sizeof($csv_line_array) - 1)) { 
     if (substr($csv_line_array[$i], 0, 13) == substr($csv_line_array[$i + 1], 0, 13)) { 
      if (strlen($csv_line_array[$i]) < strlen($csv_line_array[$i + 1])) 
       unset($csv_line_array[$i]); 
      else 
       $csv_line_array[$i] = $csv_line_array[$i + 1]; 
     } 
    } 

} 

/*if (strlen($csv_line_array[sizeof($csv_line_array)]) < strlen($csv_line_array[sizeof($csv_line_array) - 1])) 
    $csv_line_array[sizeof($csv_line_array)] = $csv_line_array[sizeof($csv_line_array) - 1]; 
else 
    unset($csv_line_array[$i]);*/ 

var_dump($line_array); 
var_dump($csv_line_array); 
?> 

将输出是这样的:

array (size=10) 
    0 => string '' (length=0) 
    1 => string '01 2015-09-03 08:01' (length=19) 
    2 => string '01 2015-09-03 11:03' (length=19) 
    3 => string '01 2015-09-03 13:15' (length=19) 
    4 => string '01 2015-09-03 17:12' (length=19) 
    5 => string '07 2015-09-03 08:15' (length=19) 
    6 => string '07 2015-09-03 17:06' (length=19) 
    7 => string '01 2015-09-04 08:05' (length=19) 
    8 => string '01 2015-09-04 11:03' (length=19) 
    9 => string '' (length=0) 
array (size=4) 
    2 => string '01 2015-09-03 13:15 | 08:01 | 11:03 | 13:15 | 17:12' (length=51) 
    3 => string '07 2015-09-03 08:15 | 08:15 | 17:06' (length=35) 
    4 => string '01 2015-09-04 08:05 | 08:05 | 11:03' (length=35) 
    5 => string '01 2015-09-04 11:03' (length=19) 
+0

我会将它保存到一个csv文件,我可以保存它像第二个数组? –