2017-02-06 8 views
-1

У меня есть файл csv, который содержит сигналы трассировки данных вибрации.
Начинается с ISO 8601 Дата 2017-01-31T16: 16: 21.000 + 01: 00 , тогда он имеет 1024 строки данных (сигнал 512 Гц 2Sec). А затем следующий сигнал Trace, который начинается с новой даты, но в том же файле -.-.импортировать csv в массив, взорвать текстовый файл по дате даты или по числу возможных?

2017-01-31T16:16:21.000+01:00 
0,06;0,03;0,01 
0,07;0,03;0,01 
0,07;0,03;0,02 
.... up to line 1025 
2017-01-31T16:24:37.000+01:00 
1,72;0,2;-0,9 
1,48;0,39;-1,46 
1,23;0,58;-1,67 
0,99;0,76;-1,81 
... up to line 2050 

Этот файл может содержать гораздо больше, чем 2 трассы, как я могу передать это в разделенных массивах? я предпочел бы массивы как:

Array 
    ( 
[0] => Array 
    (
[Time] => 2017-01-31T16:16:21.000 
[Data] => array ([0] => 0,06;0,03;0,01 
        [1] => 0,07;0,03;0,01 etc..) 
) 

Но я не знаю, как в петлю через файл и взрываются от значения даты и времени, а также использовать его. Другой способ: прочитать Firstline как Time и next 1024 строк за строкой и нажать, но как?

+0

Вы знакомы с функцией [fgetcsv] (http://php.net/manual/en/function.fgetcsv.php)? –

ответ

1

Вы можете столкнуться с проблемами, как ваш массив становится больше, но этот подход:

$i = $j = 0; 

if($handle = fopen('/path/to/file.csv', 'r')) { 
    while(($line = fgets($handle)) !== false) { 
     if($i % 1025 === 0) { 
      $j++; 
      $result[$j]['Time'] = $line; 
     } else { 
      $result[$j]['Data'][] = $line; 
     } 
     $i++; 
    } 
} 

петля Только через файл и испытание, если это первая строка или один, который является кратным 1026. Если это так, то вы находитесь на линии со временем, если это не данные.

+0

Это помогает мне, просто изменился на if ($ i% 1025 === 0) {, это именно то, что я хочу. большое спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^