【发布时间】:2021-06-19 10:41:01
【问题描述】:
你将如何从文件中获取以下文本并将其转换为数组?下面是我用来读取文件的代码,但现在它只将所有内容放入一个数组中
<?php
$fileString = file_get_contents("test.txt");
//print_r($fileString);
//$words = preg_split("/^0\s*$/m", $fileString);
//print_r($words);
$rows = explode("\r", $fileString);
print_r($rows);
?>
test.txt below
0
CIRCLE
8
V_DrillSF_16
39
16
10
765.1
20
57.0
30
0
40
4.0
0
CIRCLE
8
V_DrillSFS
39
16
10
765.1
20
57.0
30
0
40
3.5
0
CIRCLE
8
V_DrillSF_16
39
16
10
765.1
20
89.0
30
0
40
4.0
0
CIRCLE
8
V_DrillSF_16
39
16
10
765.1
20
249.0
30
0
40
4.0
我想将每个“CIRCLE”分组分解或标识为自己的数组,这样我就可以将其添加到数据库中,每个“CIRCLE”分组都以 0 开头,并且每次都具有相同的行数。
[0] => Array
(
[0]=>0
[1]=>CIRCLE
[2]=>8
[3]=>V_DrillS_16
[4]=>39
[5]=>16
[6]=>10
[7]=>765.1
[8]=>20
[9]=>57.0
[10]=>30
[11]=>0
[12]=>40
[13]=>4.0
)
【问题讨论】:
-
目前尚不清楚预期数组的最终格式应该是什么。
$rows当前是一个数组,如print_r($rows);所见。听起来下一步是使用a foreach loop 或a for loop 迭代$rows并检查项目的值。然后可能将该项目添加到不同的数组(最后返回),具体取决于它是否为CIRCLE?你是在暗示0\rCIRCLE\r8是一个部分的开始吗? -
仅供参考,您可以使用内置函数
file()将文件读入数组。那么问题就变成了如何对数组的元素进行分组。 -
“每个“CIRCLE”分组都以 0 开头,并且每次都有相同的行数” - 所以在按照 @Barmar 的建议使用
file之后,这应该那么不需要更多array_chunk。根本不需要开始搞乱正则表达式。