Php 将几行内的值保存到数组中
我正在做一个小php脚本,我有一个表单,可以在txt上保存一些东西 我需要读取所有行,并获取每行的最后一个值,然后将它们全部放入一个数组中 我想我可以用explode函数来实现,但我不知道如何实现它几次,以求和所有值并得到平均值Php 将几行内的值保存到数组中,php,Php,我正在做一个小php脚本,我有一个表单,可以在txt上保存一些东西 我需要读取所有行,并获取每行的最后一个值,然后将它们全部放入一个数组中 我想我可以用explode函数来实现,但我不知道如何实现它几次,以求和所有值并得到平均值 $nombre=$_POST['nombre']; $edad=$_POST['edad']; $email=$_POST['email']; $importe=$_POST['importe']; $nombre=$_POST[
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$email=$_POST['email'];
$importe=$_POST['importe'];
$nombre=$_POST['nombre'];
//this part writes each value of the form to a txt file separated by an " | "
// this is where I need help. I have to show the sum of all the $importe values in all of the lines in the txt
//
$miarchivo=fopen("resultados.txt","a");
if(!($miarchivo))
{
print("Imposible abrir archivo");
exit;
}
fputs($miarchivo," $nombre | $edad | $email | $importe \n" .PHP_EOL);
fclose($miarchivo);
//echo "<script>location.href='forma.php'</script>";
//This part only shows the values of the txt after the script ends
$miarchivo=fopen("resultados.txt","r");
if
(! ($miarchivo))
{
print("no hay resultados");
exit;
}
while(!feof($miarchivo)){
$linea=fgets($miarchivo,255);
print"$linea<BR>";
}
fclose($miarchivo);
所以我可以对所有变量求和,得到其他变量的平均值您需要通过添加这样的括号将
$linea[]
作为一个数组
而(!feof($miarchivo)){
$linea[]=fgets($miarchivo,255);
}
然后你可以像这样访问每一行
$linea[0]=“第1行”
$linea[1]=“第2行”
如果您需要打印当前行,就像您在while循环中所做的那样,您可以添加另一个临时变量并按如下方式打印
$linea[]=$currentLine=fgets($miarchivo,255);
打印(当前行)代码>导出到数组,然后获取最后一个值并存储在数组中。最后添加数组并获得平均结果。这是你的密码
while(!feof($miarchivo)){
$linea=fgets($miarchivo,255);
$quantityArray[] = end(explode('|',$linea));
}
$averageResult = array_sum($quantityArray)/count($quantityArray);
无需将值存储在数组中即可获得平均值。除非您需要对该阵列执行其他操作,否则这只是浪费内存。您可以在读取行时对$import
值进行求和和和计数,然后在末尾计算这些值的平均值
$count = $sum = 0;
while (($linea = fgetcsv($miarchivo, 0, '|')) !== false) {
$importe = trim($linea[3]);
$count++;
$sum += $importe;
}
if ($count) { // check count to prevent division by zero
$average = $sum / $count;
}
您正在尝试求和哪些表单值?很抱歉,我无法从脚本中分辨。所有脚本都会将多个值写入文本文件中的文本行,所有值都以|如此名称|年龄|电子邮件|数量分隔。假设我的文本文件中有几行类似的内容,现在我想读取每行的$quantity并将它们全部放入数组中,这样我就可以对它们进行求和。请在您的问题中添加澄清的详细信息,例如您在@cesarmedrano上面的评论中发布的内容这一行是什么打印“$linea
”你明白了吗?他从来没有要求过平均的结果?他只是想捕捉文本values@electric.Kariim阅读OP的最后一行,这样我就可以把它们相加,得到其他变量的平均值
$count = $sum = 0;
while (($linea = fgetcsv($miarchivo, 0, '|')) !== false) {
$importe = trim($linea[3]);
$count++;
$sum += $importe;
}
if ($count) { // check count to prevent division by zero
$average = $sum / $count;
}