Объединять или объединять N (6) строк текста в одном массиве несколько раз с php - PullRequest
0 голосов
/ 06 ноября 2019

Необходимо подготовить данные из файла .txt для импорта в базу данных через браузер. В приведенном ниже примере есть файл .txt (около 40 000 строк). Мне нужно объединить каждые 6 записей в одном массиве (первая всегда метка времени в примере). Так что, как я понимаю, необходим какой-то цикл. Пытался найти некоторые примеры (слишком легко), но не удалось. Я ценю любую помощь, которую вы можете предоставить даже какую-то ссылку.

.txt пример

1=19-10-18 10:02:06
2=+1.313026E+00 l/s 
3=+1.671796E-01m/s
4=+1.500691E+02m3 
5=+1.501138E+02m3 
6=+0.000000E+00m3 
1=19-10-18 10:03:06
2=+1.266786E+00 l/s 
3=+1.612923E-01m/s
4=+1.501403E+02m3 
5=+1.501850E+02m3 
6=+0.000000E+00m3 
1=19-10-18 10:04:06
2=+1.597391E+00 l/s 
3=+2.033861E-01m/s
4=+1.502291E+02m3 
5=+1.502738E+02m3 
6=+0.000000E+00m3 

должен выглядеть так:

array(6) {
  [0]=>
  string(15) "9-10-18 10:02:0"
  [1]=>
  string(17) "+1.313026E+00 l/s"
  [2]=>
  string(16) "+1.671796E-01m/s"
  [3]=>
  string(14) "+1.500691E+02m"
  [4]=>
  string(14) "+1.501138E+02m"
  [5]=>
  string(14) "+0.000000E+00m"
}
array(6) {
      [0]=>
      string(15) "9-10-18 10:03:0"
      [1]=>
      string(17) "+1.413026E+00 l/s"
      [2]=>
      string(16) "+1.771796E-01m/s"
      [3]=>
      string(14) "+1.300691E+02m"
      [4]=>
      string(14) "+0.501138E+02m"
      [5]=>
      string(14) "+1.000000E+00m"
    }
.
.
.

То, что я делал до сих пор:

$file=fopen("test_file/test.txt","r");

if ($fh = fopen('test.txt', 'r')) {
    while (!feof($fh)) {
        $line = fgets($fh);
        $line=trim($line);
        $line=trim($line,"1=");
        $line=trim($line,"2=");
        $line=trim($line,"3=");
        $line=trim($line,"4=");
        $line=trim($line,"5=");
        $line=trim($line,"6=");
        echo"<pre>";
        echo $line;
    }
    fclose($fh);
}

Итак, теперь результат:

9-10-18,10:02:0
+1.313026E+00 l/s
+1.671796E-01m/s
+1.500691E+02m
+1.501138E+02m
+0.000000E+00m
9-10-18,10:03:0
+1.266786E+00 l/s
+1.612923E-01m/s
+1.501403E+02m
+1.501850E+02m
+0.000000E+00m

Теперь мне нужно помещать в массив каждые 6 записей.

Ответы [ 2 ]

3 голосов
/ 06 ноября 2019

Вы можете использовать array_chunk($array, 6);

0 голосов
/ 06 ноября 2019

В дополнение к фрагментации, чтобы сохранить его в одном массиве, вы можете попробовать что-то вроде этого:

$chunks = array_chunk($array, 6);

$result = array_map(function($chunk) { return array_merge(...$chunk); } , $chunks);
...