我正在尝试将一些制表符分隔的数据换成更好的格式,我可以使用它。 JSON会很棒。
数据示例在此处:http://www.nlaa.ca/results/rr/2013/20130728tely10results.php
我已经下载了所有数据,并且每年都有自己的文本文件。从那里开始,我将它们全局化并将它们运行到一个foreach中并逐行读取它们。像这样:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td data-order="2013-05-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-04-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-03-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-02-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-01-02T21:01:26.0828604Z" class="td-limit"></td>
</tr>
</tbody>
</table>
从这里开始,我想把所有的行放在一个巨大的关联数组中:
// Grab all the .txt files
foreach (glob('src-data/*.txt') as $filename ) {
$handle = fopen($filename, 'r');
if ( $handle ) {
// run line by line through the files
while (( $line = fgets($handle) ) !== false) {
// grab the fields
$clean = preg_split("/ +/", $line);
这种方法有效,但它只为我拥有的每个.txt文件创建一个数组。
当我 // All the fields
$position = $clean[1];
$name = $clean[3] . " " . $clean[4];
$time = $clean[5];
$class = $clean[6];
$class_place = $clean[7];
$runners['position'] = $position;
$runners['name'] = $name;
$runners['time'] = $time;
$runners['class'] = $class;
$runners['class place'] = $class_place;
时,我得到两个数组 - 我在该目录中的两个示例.txt文件中的每一个都有一个数组。
我想将每个新行推送到我的print_r($runners);
数组,因为我循环遍历它。
我的最终目标是创建一个大的json文件,我可以使用Js。我认为只要$runners[]
正在运行,json_encode($runners)
即可运行,但感谢任何建议。谢谢!
这是我正在使用的完整代码,只是为了确定:
$runners
答案 0 :(得分:1)
你不是&#34;推动&#34;到一个阵列上。你只有一个数组,你不断覆盖一些成员值。你应该有更多的东西:
$arr = array();
foreach(... list of files ...) {
$fh = fopen($file, 'r');
while ($row = fgetcsv($fh, .... options ...)) {
... process $row ...
$arr[] = $row;
}
fclose($fh);
}
请注意[]
- 这是&#34; push&#34;操作
答案 1 :(得分:1)
替换:
$runners['position'] = $position;
$runners['name'] = $name;
$runners['time'] = $time;
$runners['class'] = $class;
$runners['class place'] = $class_place;
$runners[] = $clean;
使用:
$runners[] = [
'position' => $position,
'name' => $name,
'time' => $time,
'class' => $class,
'class_place' => $class_place
];
你会得到类似(虚拟数据)的东西:
array(
[0] => array(
'position' => 1,
'name' => 'Hans Muster',
'time' => '05:18',
'class' => '1A',
'class_place' => '2'
),
[1] => array(
'position' => 4,
'name' => 'Franz Muster',
'time' => '08:12',
'class' => '1A',
'class_place' => '7'
)
)