我有以下内容,并希望得到一些帮助:
function Display($line) {
$section = split(" +", $line);
for ($i = 1; $i <4; $i+=1){
$section[$i];
}
$countsection = count($section[3]);
$name = "$section[1] $section[2]";
print "<td>$name</td>\n";
print "<td>$countsection</td>\n";
$endvalue = end($section);
print "$endvalue";
}
$allvalues = file("filename.txt");
foreach ($allvalues as $checkline) {
if (ereg("^[[:digit:]]", $checkline)) {
Display($checkline);
}
}
这是一个基本的纲要:
我想要
$counsection
和$endvalue
将被计算在内。因此,$countsection
中的值需要加在一起,$endvalue.
所以下面的内容会是这样的:
Name | Count Section | End Value
Mary Jane | 40 | 156
Tom John | 30 | 60
而不是:
Name | Count Section | End Value
Mary Jane | 10 | 50
Mary Jane | 10 | 50
Mary Jane | 20 | 56
Tom John | 10 | 20
Tom John | 15 | 30
Tom John | 5 | 10
文件内容示例:
12345 RM 100M 121 T 0400 1059 MWHA 110 Jane, Mary G 40
12345 RM 100M 122 W 0600 1059 MWHA 310 Jane, Mary P 40
12345 RM 100P 110 M W 0800 0929 CLOU 122 John, Tom 39
12345 RM 100P 210 M W 0930 1059 CLOU 205 John, Tom 40
提前致谢。
答案 0 :(得分:0)
你可以尝试
$allvalues = getValues("log.txt");
print("<table>");
foreach ( $allvalues as $name => $value ) {
print("</tr>");
printf("<td>%s</td><td>%d</td><td>%d</td>", $name, $value[0], $value[1]);
print("</tr>");
}
print("</table>");
输出
<table>
<tr>
<td>Jane, Mary G</td>
<td>121</td>
<td>40</td>
</tr>
<tr>
<td>Jane, Mary P</td>
<td>122</td>
<td>40</td>
</tr>
<tr>
<td>John, Tom</td>
<td>320</td>
<td>79</td>
</tr>
</table>
示例
Jane, Mary G 121 40
Jane, Mary P 122 40
John, Tom 320 79
使用的功能
function getValues($file) {
$lines = file($file);
$values = array();
foreach ( $lines as $line ) {
$line = trim($line);
if (empty($line))
continue;
$line = explode(" ", $line);
if (isset($values[$line[11]])) {
$values[$line[11]][0] += strstr($line[3], " ");
$values[$line[11]][1] += $line[13];
} else {
$values[$line[11]] = array(strstr($line[3], " "),$line[13]);
}
}
return $values;
}