您的位置 首页 编程知识

PHP 教程:从文本文件生成带有汇总行的 HTML 表格

本文介绍如何使用 PHP 从文本文件中读取数据,并将其格式化为 HTML 表格。除了基本的数据展示,我们还将计…

PHP 教程:从文本文件生成带有汇总行的 HTML 表格

本文介绍如何使用 PHP 从文本文件中读取数据,并将其格式化为 HTML 表格。除了基本的数据展示,我们还将计算并添加一个包含汇总信息的最后一行,例如不同名称的数量、总薪资、最常见的城镇以及平均年龄。

从文本文件读取数据并生成 HTML 表格

首先,我们需要从文本文件中读取数据。假设我们的文本文件 name.txt 的内容如下:

name:Ivan,Salary:5000,town:Sofia,age:20 name:Pesho,Salary:1500,town:Pleven,age:19 name:Gosho,Salary:2000,town:Varna,age:18 name:Georgi,Salary:3000,town:Pleven,age:46 name:Ivailo,Salary:6000,town:Pleven ,age:25 name:Stamat,Salary:7000,town:Varna,age:46 name:Aleksandar,Salary:1500,town:Burgas,age:44 name:Kiko,Salary:5000,town:Plovdiv,age:25 name:Misho,Salary:5250,town:Sofia,age:24 name:Daniel,Salary:3000,town:Plovdiv,age:34 name:John,Salary:6000,town:Pleven,age:50 name:Ana,Salary:9000,town:Sofia,age:18 name:Maria,Salary:9500,town:Sofia,age:30 name:Marian,Salary:9500,town:Sofia,age:20 name:Petko,Salary:9500,town:Sofia,age:19 name:Nikola,Salary:9500,town:Sofia,age:45 name:Ani,Salary:9500,town:Sofia,age:47
登录后复制

以下 PHP 代码将读取此文件,并将其内容显示在一个 HTML 表格中:

<?php  $file = fopen('name.txt', "r"); $names = []; $cities = []; $salaries = []; $ages = [];  echo "<table border="1px">"; echo "<tr><th>Name</th><th>Salary</th><th>Town</th><th>Age</th></tr>";  while (!feof($file)) {     $string = fgets($file);     $finalArray = [];      $asArr = explode(',', $string);     foreach ($asArr as $val) {         $tmp = explode(':', $val);         $finalArray[$tmp[0]] = trim($tmp[1] ?? ""); // 使用 null 合并运算符并trim     }      $cols = array_values($finalArray);     [$name, $salary, $city, $age] = $cols; // 使用列表赋值      $names[] = $name;     $salaries[] = $salary;     $cities[] = $city;     $ages[] = $age;      echo '<tr>';     foreach ($cols as $col) {         echo '<td>' . $col . '</td>';     }     echo '</tr>';  }  //计算汇总行 $countOfNames = count(array_unique($names)); $citiesCount = array_count_values($cities); $maxVal = max($citiesCount); $mostCommonCity = array_search($maxVal, $citiesCount); $sumOnAllSalary = array_sum($salaries); $averageAges = (int)(array_sum($ages) / count($ages));  echo '<tr>'; echo '<td>' . $countOfNames . '</td>'; echo '<td>' . $sumOnAllSalary . '</td>'; echo '<td>' . $mostCommonCity . '</td>'; echo '<td>' . $averageAges . '</td>'; echo '</tr>';  echo "</table>";  fclose($file);  ?>
登录后复制

代码解释:

立即学习“”;

  1. 打开文件: fopen(‘name.txt’, “r”) 打开名为 name.txt 的文件,以只读模式打开。
  2. 初始化数组: $names, $cities, $salaries, $ages 用于存储从文件中提取的数据,以便后续计算。
  3. 输出表格头部: echo “
    “; 和 echo “

    “; 输出 HTML 表格的开始标签和表头。

  4. 循环读取文件: while (!feof($file)) 循环读取文件,直到文件结束。
  5. 读取一行数据: fgets($file) 从文件中读取一行数据。
  6. 分割字符串:
    • explode(‘,’, $string) 将字符串按逗号分割成数组。
    • explode(‘:’, $val) 将每个数组元素按冒号分割成键值对。
    • trim($tmp[1] ?? “”) 移除值的前后空格,并使用 null 合并运算符,防止键不存在时出现错误。
  7. 提取数据到数组: 将提取的数据分别存入 $names, $salaries, $cities, $ages 数组。
  8. 输出表格行: echo ‘
  9. ‘; 和 echo ‘

    ‘; 输出 HTML 表格的每一行数据。

  10. 计算汇总信息:
    • count(array_unique($names)) 计算不同名称的数量。
    • array_count_values($cities) 统计每个城市出现的次数。
    • max($citiesCount) 找到出现次数最多的城市。
    • array_search($maxVal, $citiesCount) 获取出现次数最多的城市的名字。
    • array_sum($salaries) 计算所有薪资的总和。
    • (int)(array_sum($ages) / count($ages)) 计算平均年龄,并转换为整数。
  11. 输出汇总行: echo ‘
  12. ‘; 和 echo ‘

    ‘; 输出 HTML 表格的最后一行汇总数据。

  13. 关闭表格: echo “
  14. Name Salary Town Age
    ‘ . $col . ‘
    ‘ . … . ‘

    “; 输出 HTML 表格的结束标签。

  15. 关闭文件: fclose($file) 关闭打开的文件。

注意事项

  • 确保 name.txt 文件存在,并且 PHP 脚本有读取权限。
  • 代码中的 $tmp[1] ?? “” 使用了 PHP 7+ 的 null 合并运算符。 如果你使用的是 PHP 7 之前的版本,请使用 isset($tmp[1]) ? $tmp[1] : “” 代替。
  • 可以根据实际需要修改表格的样式和汇总信息的计算方式。
  • 建议对用户输入的数据进行验证和过滤,以防止安全漏洞,例如跨站脚本攻击 (XSS)。
  • 错误处理:在实际应用中,应该添加错误处理机制,例如检查文件是否成功打开,以及在数据处理过程中是否发生错误。

总结

通过以上代码,我们成功地从文本文件中读取数据,并将其格式化为 HTML 表格,同时计算并添加了包含汇总信息的最后一行。这个例子展示了 PHP 在数据处理和网页生成方面的强大功能。你可以根据自己的需求修改和扩展这段代码,以适应更复杂的应用场景。

以上就是PHP 教程:从文本文件生成带有汇总行的 HTML 表格的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/13886.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部