Импорт данных из каталогов и текстовых документов в PHP - PullRequest
0 голосов
/ 06 октября 2018

Я хочу отправить данные в массив из текстовых документов в каталоге, где заголовок столбца называется ATMP.В каждом документе позиция ATMP может быть изменена.

Это текстовый документ, как он выглядит

WDIR WSPD GST WVHT  DPD   APD   MWD  PRES    ATMP  WTMP  DEWP VIS  TIDE
degT m/s  m/s m     sec   sec   degT hPa     degC  degC  degC mi   ft
116  2.8  3.0 99.00 99.00 99.00 999  9999.0  23.8  999.0 16.2 99.0 99.00
117  2.8  3.0 99.00 99.00 99.00 999  9999.0  23.8  999.0 16.2 99.0 99.00

Это код, который я пытаюсь достичь, я просто нажму "индекс.php ATMP "команда в моем php-терминале, чтобы заставить его работать

вот код:

$dir  = './files';
$files1 =  preg_grep('/^([^.])/', scandir($dir));
for($x = 0; $x <= count($files1); $x++){
$f1 = fopen($dir . '/' .$files1[$x], 'r');    //
fseek($f1, 0, SEEK_SET);
while(($line =  fgets($f1)) !== false){
array_push($data_array_list, $line);
}
}

здесь 2 вещи, которые я должен сделать 1. Я должен игнорировать первые две строки перед нажатиемданные в массив 2. Я должен получить следующие значения ATMP

Я не понимаю, как ее решить.Не могли бы вы помочь мне, как это сделать?

1 Ответ

0 голосов
/ 06 октября 2018

У меня есть скрипт для получения желаемых данных.(этот скрипт будет работать, когда столбец ATMP меняет свое местоположение)

Удалить дополнительный код (для целей тестирования. Также вы можете оптимизировать этот код)

<?php
$myFile = "t1.txt";
$lines = file($myFile);//file in to an array

//var_dump($lines);
echo "<pre>";
$top_row=$lines[0];

$top_row = preg_replace('/\s+/', ' ',$top_row);//remove duplicate spaces in lines

$position_data = explode(' ', $top_row);
foreach ($position_data as $key => $value) {
    if($value=='ATMP'){
        $index=$key;//here is your index or column number where ATMP exist
    }
}
print_r($position_data);
unset($lines[0]);
unset($lines[1]); // we do not need these lines.
// exit;
foreach($lines as $key => $line) 
{
    $line = preg_replace('/\s+/', ' ',$line);//remove only duplicate or multiple spaces
    $var = explode(' ', $line);
    foreach ($var as $key => $value2) {
        if($index == $key){
            $arr[]=$value2;
        }
    }

    // print_r($key);
    // echo "<br>";
}

echo "<pre>";
print_r($arr);
...