我要导入一个文件,比如june.txt,它会包含以下数据等数据:
Sandy,820,384,133,18,408
Wanda,120,437,128,807,595
Jane,631,415,142,687,600
Andrea,179,339,349,594,986
Wanda,803,191,6,807,322
Jane,741,975,34,15,832
Jane,239,714,250,94,497
Andrea,219,188,411,584,713
然后PHP会将其分解为两种不同的方式:
第一种方式是将所有名称与总计捆绑在一起,例如:
Sandy 820 384 133 18 408
Total 820 384 133 18 408
Jane 631 415 142 687 600
Jane 741 975 34 15 832
Jane 239 714 250 94 497
Total 1611 2104 426 796 497
Andrea 179 339 349 594 986
Andrea 219 188 411 584 713
Total 398 527 760 1178 1699
Wanda 120 437 128 807 595
Wanda 803 191 6 807 322
Total 923 628 134 1614 917
第二种方法是将名称加在一起并将其添加到一个大列表中,例如
Sandy 820 384 133 18 408
Jane 1611 2104 426 796 497
Andrea 398 527 760 1178 1699
Wanda 923 628 134 1614 917
任何逻辑或建议都会有所帮助,我是PHP新手,不知道如何做到这一点。我的计划是最终在HTML表格中显示结果并将它们排序,但我可以在以后解决这个问题,除非有人觉得有必要在解析中添加等等。
答案 0 :(得分:1)
我觉得对你有用的东西是explode函数。
就创建这些视图而言,我首先将所有这些数据加载到基于名称的数组的关联数组中,然后根据需要进行迭代:
$datafile = file("filename.txt");
// reads lines into an associative array (key is the name) of arrays
// where each sub-array is a list of the records for each name
$arr = array();
foreach($datafile as $line){
$temp = explode(',', $line);
$arr[$temp[0]][] = $temp;
}
// iterate over each person
foreach($arr as $person_set){
// create an array to hold the sum of each column
// (and the name in the first column)
$totals = array();
$totals[0] = $person_set[0][0];
for($i = 1; $i < length($record); $i++){
$totals[$i] = 0;
}
// now iterate over each record for this person
foreach($person_set as $record){
// print a particular record
echo implode(' ', $record) . '<br>';
// add each column (1..end) to the totals array
for($i = 1; $i < length($record); $i++){
$totals[$i] += $record[$i];
}
}
// print out the totals line
echo implode(' ', $totals) . '<br><br>';
}
我会将这些数据格式化为表格作为练习。
答案 1 :(得分:0)
嗯,首先,我用PHP的fgetcsv()
实现了这样的文件。 Docs
答案 2 :(得分:0)
您可以尝试这样的脚本:
<?php
echo "<table>";
$data = file("june.txt");
foreach($data as $month) {
$line = explode(',', $data);
echo '<tr><td>', implode('</td><td>', $line), '</td></tr>';
}
echo "</table>";
编辑:
我的坏,没注意到你正在排序/分组/总计。不过,这应该会让你走上正轨。关键是使用$line
作为您的信息来源。只需将其编译成数组并稍后输出(而不是在循环中直接输出)。