问题是从文件中读取文本,并准备和保存特定文本到变量,以便插入数据库。类似以下内容:https://www.wdb24.com/php-read-text-file-and-insert-into-mysql-database/
测量/导入数据看起来像:
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
.
.
.
总是只有六个重复行中的前三行(1=…2=…3=…(需要存储在变量中,如第一美元,第二美元,第三美元。可能像数组一样,因为我需要在数据库的一个字段中保存文本数据
$first=19-10-18 10:02:06,19-10-18 10:03:06,19-10-15 10:04:06//从1=
$秒=+1.313026E+00,+2.333026E+000,+2.123026E+00//来自2=
$third=+1.671796E-01,1.87794E-01,1.34146E-01//来自3=
我有一小部分代码,请有人帮助准备数据(插入数据库不是问题(。
<?php
$file=fopen("test_file/test.txt", "r");
while(!feof($file)){
$content=fgets($file);
$content=explode(PHP_EOL,$content); //break line?
//list($first,$second,$third,$four,$five,$six)=$content;
var_dump ($content); //result is some strange array, can't call $content[0] in some loop...
}
fclose($file);
?>
结果是不是有些奇怪的表情?我是php beginer,提前感谢您的任何建议、链接。。。
若你们想知道最终产品是什么,那个么它就是从数据库中读取数据的谷歌图表。我认为每个测量都有表格是不方便的,计划将其存储在中
id |时间戳|值1 |值2
1|多次|manyValues|manyValue
2。。。。。。。。。。。。
因此,在这种情况下,只有一个表具有许多测量值。
您的代码看起来像这样:
<?php
$handle = fopen("inputfile.txt", "r");
$lineVariables = [];
if ($handle) {
while (($line = fgets($handle)) !== false) {
$tmp = explode('=', $line);
$lineVariables[trim($tmp[0])][] = trim($tmp[1]);
}
fclose($handle);
$result = [];
foreach ($lineVariables as $key => $variable) {
$result[$key] = implode(', ', $variable);
}
echo '<pre>' . print_r($result, true) . '</pre>';
} else {
// error opening the file.
}
输出:
Array
(
[1] => 19-10-18 10:02:06, 19-10-18 10:03:06, 19-10-18 10:04:06
[2] => +1.313026E+00 l/s, +1.266786E+00 l/s, +1.597391E+00 l/s
[3] => +1.671796E-01m/s, +1.612923E-01m/s, +2.033861E-01m/s
[4] => +1.500691E+02m3, +1.501403E+02m3, +1.502291E+02m3
[5] => +1.501138E+02m3, +1.501850E+02m3, +1.502738E+02m3
[6] => +0.000000E+00m3, +0.000000E+00m3, +0.000000E+00m3
)
解释
在while循环中,您读取的行如下:
$line = fgets($handle)
然后你需要处理这些行。由于变量的索引是与要添加到行中的行变量分隔开的第一个字符,因此可以使用"="字符作为分隔符的分解函数。
然后,在$tmp数组中,您将拥有2个元素:$tmp[0]
将包含结果的索引。$tmp[1]
将包含该行的其余部分。
例如第一行:
$tmp[0] // contains 1
$tmp[1] // contains 19-10-18 10:02:06
经过while循环后,我们的$lineVariables
将如下所示:
Array
(
[1] => Array
(
[0] => 19-10-18 10:02:06
[1] => 19-10-18 10:03:06
[2] => 19-10-18 10:04:06
)
[2] => Array
(
[0] => +1.313026E+00 l/s
[1] => +1.266786E+00 l/s
[2] => +1.597391E+00 l/s
)
[3] => Array
(
[0] => +1.671796E-01m/s
[1] => +1.612923E-01m/s
[2] => +2.033861E-01m/s
)
[4] => Array
(
[0] => +1.500691E+02m3
[1] => +1.501403E+02m3
[2] => +1.502291E+02m3
)
[5] => Array
(
[0] => +1.501138E+02m3
[1] => +1.501850E+02m3
[2] => +1.502738E+02m3
)
[6] => Array
(
[0] => +0.000000E+00m3
[1] => +0.000000E+00m3
[2] => +0.000000E+00m3
)
)
现在,您可以关闭该文件,并专注于将结果格式化为所需的外观。我们将结果存储在$result
变量中,这是一个数组,数组的一个元素将表示一个所需的结果,数组上的索引将是对行的第一个数字字符的引用。
要为每一行添加$lineVariable
的元素,我们可以使用内爆函数,它与爆炸函数有点相反。对于单个,这将转换为:
Array
(
[0] => 19-10-18 10:02:06
[1] => 19-10-18 10:03:06
[2] => 19-10-18 10:04:06
)
在这一行字符串中:
19-10-18 10:02:06, 19-10-18 10:03:06, 19-10-18 10:04:06
因此,我们只需完成准备好的$lineVariables
,并将元素处理为所需的格式。
就是这样。