我可以读取文件并将其放入数组中。
file.txt的:
time value1 value2
.00 .0000 21.2310
100.92 200.2272 7.7243
200.92 222.4021 8.6395
我目前的代码:
$array = file('file.txt');
$new_array = array();
foreach ($array as $line) {
$string = preg_replace('/\s+/',';', $line);
$line_array = explode("\t", $string);
$new_array[] = $line_array[0];
}
我的输出:
array
'time' =>
array
0 => string '.00'
1 => string '267.1081'
2 => string '267.1043'
'value1' =>
array
0 => string '100.92'
1 => string ' 200.2272'
2 => string '7.7243'
'value2' =>
array
0 => string '200.92'
1 => string '222.4021'
2 => string '8.6395'
但我的愿望是:
$my_array = Array
(
[0] => Array
(
[time] => .00
[value1] => .0000
[value2] => 21.2310
)
[1] => Array
(
[time] => 100.92
[value1] => 200.2272
[value2] => 7.7243
)
[2] => Array
(
[time] => 200.92
[value1] => 222.4021
[value2] => 8.6395
)
)
如何将第一行作为其他值的键?
答案 0 :(得分:3)
这应该适合你:
这里我首先将文件放入一个带file()
的数组中,其中每一行都是一个数组元素。在那里,我忽略每行末尾的新行字符并跳过空行。
在此之后,我使用array_map()
遍历每一行,并用preg_split()
将其拆分1个或多个空格。在我返回之前,我使用array_filter()
删除空元素。
然后我使用array_shift()
将第一个innerArray作为$header
。
最后,我再次浏览所有innerArrays并array_combine()
$header
数组的值。
<?php
$lines = file("file.txt", FILE_IGNORE_NEW_LINES |FILE_SKIP_EMPTY_LINES);
$data = array_map(function($v){
return array_filter(preg_split("/\s+/", $v));
}, $lines);
$header = array_shift($data);
$data = array_map(function($v)use($header){
return array_combine($header, $v);
}, $data);
print_r($data);
?>
输出:
Array
(
[0] => Array
(
[time] => .00
[value1] => .0000
[value2] => 21.2310
)
[1] => Array
(
[time] => 100.92
[value1] => 200.2272
[value2] => 7.7243
)
[2] => Array
(
[time] => 200.92
[value1] => 222.4021
[value2] => 8.6395
)
)