所以我有一个任务,我应该在php中读取一个文本文件,其中包含学生ID及其成绩,并用竖线分隔。看起来像这样:
12345|4|2|1|0|4
45678|1|2|3|4|4
78901|5|5|5|5|4
程序应该打印出文件中的学生人数,我通过简单地回显行数就可以做到这一点。但是,我也应该打印每个学生的成绩总和,而我根本找不到解决方法。是否按顺序或类似方式获得字符?我已经为此苦苦挣扎了一天,但我所得到的只是这样:
<?php
$file="exam.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
$line = fgets($handle);
$linecount++;
}
echo "total_students was $linecount:";
$homepage = file_get_contents('exam.txt');
echo $homepage;
?>
此代码仅打印页面和行数,仅此而已。
答案 0 :(得分:0)
因此,在向正确的方向指导之后,我设法提出了解决方案!
<?php
$file="exam.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
$line = fgets($handle);
$linecount++;
}
echo "total_students was $linecount:\n";
$lines = file('exam.txt');
$sum = 0 ;
foreach ($lines as $line){
$var = explode("|", $line);
$sum = $var[1]+$var[2]+$var[3]+$var[4]+$var[5];
$all += $sum;
echo "$var[0]: $sum points\n";
}
$average = $all / $linecount;
echo "The average score was $average points."
?>
我将每行分解为一个数组,除以“ |”符号,然后从数组的[0]中打印出学生ID,并对其余的求和。之后,我将总和相加,得出平均值。