我可以读取文件并将其放入数组。
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
)
)
如何获得第一行作为其他值的键?
这应该为您工作:
在这里,我首先将文件放入一个数组,file()
其中每一行都是一个数组元素。在那里,我忽略了每行末尾的换行符,并跳过了空行。
之后,我用循环遍历每行,array_map()
并用preg_split()
1个或多个空格分隔。在返回之前,我使用删除了空元素array_filter()
。
然后我得到的第一innerArray如$header
用array_shift()
。
最后,我只需要再次遍历所有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
)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句