Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
PHP 教程:从文本文件生成表格并计算统计信息_创想鸟

PHP 教程:从文本文件生成表格并计算统计信息

php 教程:从文本文件生成表格并计算统计信息

本文档旨在指导开发者如何使用 PHP 从文本文件中读取数据,生成 HTML 表格,并计算一些基本的统计信息,例如不同姓名的数量、薪资总和、最常见的城市以及平均年龄。通过本文,你将学习到文件读取、字符串处理、数组操作以及基本的 HTML表格生成。

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

首先,我们需要从文本文件中读取数据。假设我们的文本文件 name.txt 包含以下格式的数据:

name:Ivan,Salary:5000,town:Sofia,age:20name:Pesho,Salary:1500,town:Pleven,age:19name:Gosho,Salary:2000,town:Varna,age:18...

每一行代表一个人的信息,信息之间用逗号分隔,键值对之间用冒号分隔。

以下 PHP 代码可以读取文件,解析数据,并生成 HTML 表格:

立即学习“PHP免费学习笔记(深入)”;

<?php$file = fopen('name.txt', "r");if ($file) {    echo "";    echo "";    $names = [];    $cities = [];    $salaries = [];    $ages = [];    while (!feof($file)) {        $string = fgets($file);        if ($string === false) {            break; // 防止读取空行导致错误        }        $finalArray = [];        $asArr = explode(',', $string);        foreach ($asArr as $val) {            $tmp = explode(':', $val);            if (count($tmp) == 2) { // 确保分割结果包含键和值                $finalArray[trim($tmp[0])] = trim($tmp[1]); // 使用 trim() 移除多余的空格            }        }        if (empty($finalArray)) {            continue; // 跳过空行或格式错误的行        }        $name = $finalArray['name'] ?? '';        $salary = $finalArray['Salary'] ?? '';        $city = $finalArray['town'] ?? '';        $age = $finalArray['age'] ?? '';        $names[] = $name;        $salaries[] = $salary;        $cities[] = $city;        $ages[] = $age;        echo '';        echo ''; // 使用 htmlspecialchars() 防止 XSS 攻击        echo '';        echo '';        echo '';        echo '';    }    fclose($file);    // 计算统计信息    $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 '';    echo '';    echo '';    echo '';    echo '';    echo '';    echo "
NameSalaryTownAge
' . htmlspecialchars($name) . '' . htmlspecialchars($salary) . '' . htmlspecialchars($city) . '' . htmlspecialchars($age) . '
' . $countOfNames . '' . $sumOnAllSalary . '' . $mostCommonCity . '' . $averageAges . '
";} else { echo "Unable to open file!";}?>

代码解释:

打开文件: fopen(‘name.txt’, “r”) 打开名为 name.txt 的文件,”r” 表示以只读模式打开。读取文件内容: while (!feof($file)) 循环读取文件,直到文件末尾。fgets($file) 从文件中读取一行。解析数据:explode(‘,’, $string) 将每一行按照逗号分割成数组。explode(‘:’, $val) 将每个元素按照冒号分割成键值对。trim() 函数用于移除字符串两侧的空白字符,确保数据清洗。构建 HTML 表格: 使用 echo 语句输出 HTML 标签,动态生成表格的行和单元格。htmlspecialchars() 函数用于转义 HTML 实体,防止 XSS 攻击。计算统计信息:array_unique($names) 获取不重复的姓名列表,count() 计算数量。array_count_values($cities) 统计每个城市出现的次数。max() 获取出现次数最多的城市的次数,array_search() 找到对应的城市。array_sum() 计算薪资总和。(int)(array_sum($ages) / count($ages)) 计算平均年龄,并强制转换为整数。输出统计信息: 将计算得到的统计信息输出到表格的最后一行。关闭文件: fclose($file) 关闭文件,释放资源。错误处理: 增加 if ($string === false) { break; } 和 if (empty($finalArray)) { continue; } 检查,防止空行和格式错误的行导致程序出错。空值处理: 使用 ?? ” 空合并运算符,为 $name,$salary,$city,$age 赋予默认值,避免因键不存在而报错。

注意事项

文件路径: 确保 name.txt 文件存在,并且 PHP 脚本有权限读取该文件。建议使用绝对路径或相对于脚本的路径。数据格式: 确保 name.txt 文件中的数据格式正确,每一行都包含 name、Salary、town 和 age 字段,并且使用逗号和冒号正确分隔。错误处理: 建议添加更完善的错误处理机制,例如使用 try-catch 块捕获异常,并记录错误日志。安全性: 使用 htmlspecialchars() 函数转义 HTML 实体,防止 XSS 攻击。性能: 如果文件很大,可以考虑使用 fgetcsv() 函数按行读取 CSV 文件,效率更高。编码: 确保文件编码与 PHP 脚本编码一致,避免出现乱码问题。建议使用 UTF-8 编码。

总结

通过本文,你学习了如何使用 PHP 从文本文件中读取数据,解析数据,并生成 HTML 表格。同时,你还学习了如何计算一些基本的统计信息,例如不同姓名的数量、薪资总和、最常见的城市以及平均年龄。希望本文能够帮助你更好地理解 PHP 文件操作、字符串处理和数组操作,并应用到实际项目中。

以上就是PHP 教程:从文本文件生成表格并计算统计信息的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1292008.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PHP命令如何通过-c参数指定配置文件 PHP命令指定配置文件的简单教程
上一篇 2025年12月11日 07:55:46
使用PHP生成带有汇总行的表格
下一篇 2025年12月11日 07:55:56

相关推荐

  • VSCode如何集成Jai游戏开发环境 VSCode配置高性能游戏编程工作流

    配置#%#$#%@%@%$#%$#%#%#$%@_e2fc++805085e25c9761616c00e065bfe8集成jai游戏开发环境的核心在于正确设置编译器与调试器并利用扩展提升效率,1. 配置settings.json指定jai.compilerpath、builddirectory、in…

    2026年9月22日
    500
  • VSCode语言特性贡献点配置

    通过配置package.json中的contributes字段可实现VSCode语言扩展,依次需设置语法高亮(grammars)、语言绑定(languages)、激活事件(activationEvents)及语言服务器功能(如补全、跳转),并定义language-configuration.json…

    2026年9月21日
    100
  • 如何检测Linux网络接口DMA状态 硬件加速功能验证

    如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证

    可通过以下方法检测linux系统中网络接口dma状态和硬件加速是否启用:1.使用 ethtool -i eth0 和 ethtool -k eth0 查看驱动信息及sg、tso、ufo、gso功能是否启用;2.通过 cat /proc/interrupts 和 cat /proc/slabinfo …

    2026年9月21日 • 用户投稿
    800
  • PHP/MySQL:高效合并订单商品并按日期分组显示

    本教程将指导如何在PHP/MySQL应用中,将同一日期的订单商品合并显示在同一行,以提高数据展示的清晰度。核心解决方案是利用MySQL的GROUP_CONCAT函数在数据库层面进行高效聚合,避免复杂的PHP逻辑处理,从而简化代码并优化性能。 订单数据展示的常见挑战 在开发在线购物平台时,通常需要向用…

    2026年9月21日
    200
  • Java ConcurrentSkipListMap在并发场景下应用

    ConcurrentSkipListMap是基于跳跃表实现的线程安全有序映射,支持高并发读写与高效范围查询,适用于需排序的并发场景,如排行榜系统;相比ConcurrentHashMap,它提供有序性与导航操作,但插入查找为O(log n),内存开销较大,适合读多写少或需区间扫描的业务。 在高并发场景…

    2026年9月21日
    100
  • 怎么全选VSCode多个光标_VSCode多光标操作与批量选择文本教程

    VSCode中高效创建多光标的方法包括:Alt+Click手动添加光标,适用于不规则位置;Ctrl+Alt+方向键垂直添加光标,适合连续多行操作;Ctrl+D逐个选择匹配项,精准控制选择范围;Ctrl+Shift+L一次性选择所有匹配项,实现全局批量修改。结合查找替换和列选择模式可进一步提升编辑效率…

    2026年9月21日
    100
  • MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案

    MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案

    mysql的缓存机制主要包括innodb缓冲池、查询缓存和操作系统文件系统缓存等,其中innodb缓冲池是性能优化的核心。1. innodb缓冲池缓存表数据和索引页,减少磁盘i/o,提升读写效率;2. 查询缓存因失效频繁及锁竞争问题,在高并发场景下易成瓶颈,已在mysql 8.0中移除;3. 操作系…

    2026年9月21日 • 用户投稿
    200
  • Guava Multimap:高效获取并打印指定键的所有关联值

    guava multimap是处理一键多值映射关系的强大工具。要获取特定键的所有关联值,应直接使用其提供的`multimap#get(k)`方法。该方法会返回一个包含所有匹配值的`collection`,即使键不存在,也会返回一个空集合而非`null`,从而简化了值检索和空值处理逻辑,是比手动迭代键…

    2026年9月21日
    100
  • Java中如何高效地合并两个Map对象

    合并Map主要有三种方式:putAll()用于可变Map且性能高,Stream API适合不可变合并并支持冲突处理,Map.ofEntries()适用于小规模静态数据;选择依据是版本、是否需保持不可变及性能需求。 在Java中合并两个Map对象是常见操作,尤其在处理配置、缓存或数据聚合时。高效的方式…

    2026年9月20日
    200
  • 如何在Laravel中实现数据分组

    在laravel中实现数据分组,主要有两种方式:1. 使用collection的groupby()方法对已获取的数据在内存中进行灵活分组,适合数据量小或逻辑复杂的情况;2. 使用数据库的group by子句通过eloquent或query builder在数据库层面高效处理大数据集并配合聚合函数进行…

    2026年9月13日
    000
  • MySQL GROUP_CONCAT函数实现订单项按日期合并显示

    本教程详细阐述了如何利用MySQL的GROUP_CONCAT函数,将同一日期下的多个订单项合并为一行显示,并以逗号分隔。文章将涵盖从数据库查询优化到PHP数据处理的完整流程,旨在帮助开发者高效地在购物网站等场景中展示分组后的订单信息,提升数据可读性。 在构建在线购物平台时,展示客户订单详情是一个常见…

    2026年9月13日
    100
  • 如何为VSCode设置代码自动补全?

    如何为VSCode设置代码自动补全?如何为VSCode设置代码自动补全?如何为VSCode设置代码自动补全?如何为VSCode设置代码自动补全?

    启用LSP智能提示确保语言服务器激活;2. 检查设置中自动补全触发选项;3. 按Ctrl+Space手动触发建议框以提升补全效率。 VSCode 默认已支持基础的代码自动补全,但要获得更智能、高效的补全体验,需要根据语言和开发需求进行适当配置。以下是设置自动补全的关键步骤和建议。 启用内置智能提示 …

    2026年9月12日 • 用户投稿
    000
  • Linux系统目录sys的作用解析

    Linux系统目录sys的作用解析Linux系统目录sys的作用解析Linux系统目录sys的作用解析Linux系统目录sys的作用解析

    /sys是sysfs文件系统的挂载点,用于向用户空间结构化展示内核设备、驱动等层次信息,支持查看设备拓扑、读写硬件属性、配合udev实现热插拔,其内容位于内存不占磁盘空间。 Linux系统中的/sys目录是sysfs文件系统的挂载点,主要用于向用户空间导出内核中设备、驱动和子系统的层次化信息。它不是…

    2026年9月12日 • 用户投稿
    200
  • ThinkPHP的模板变量怎么传递?ThinkPHP如何输出数据?

    ThinkPHP的模板变量怎么传递?ThinkPHP如何输出数据?ThinkPHP的模板变量怎么传递?ThinkPHP如何输出数据?ThinkPHP的模板变量怎么传递?ThinkPHP如何输出数据?ThinkPHP的模板变量怎么传递?ThinkPHP如何输出数据?

    在thinkphp中,模板变量通过控制器的assign()方法传递并用于视图展示,1. 使用assign()将数据从控制器传递到模板,如$this->assign(‘name’, $name);2. 在模板中通过{$var}语法或{:function()}输出变量和调用…

    2026年9月12日 • 用户投稿
    100
  • YII框架的URL管理是什么?YII框架如何配置路由?

    yii框架的url管理核心在于将用户友好的url映射到控制器和动作,并支持反向生成url。1. 通过配置urlmanager组件实现路由管理,需设置enableprettyurl为true启用美化url,showscriptname为false隐藏index.php。2. 自定义路由规则格式为&#8…

    2026年9月12日
    000
  • YII框架的IDE支持是什么?YII框架如何适配PHPStorm?

    答案:YII框架的IDE支持通过配置和插件提升开发效率。首先确保PHPStorm正确配置Composer和PHP解释器,再通过“Yii2 Support”插件识别别名与魔法方法;利用PHPDoc或生成_ide_helper.php文件解决动态属性补全问题,结合Xdebug实现高效调试,从而实现智能提…

    2026年9月12日
    100
  • Linux如何为用户设置环境变量并保持生效

    Linux如何为用户设置环境变量并保持生效Linux如何为用户设置环境变量并保持生效Linux如何为用户设置环境变量并保持生效Linux如何为用户设置环境变量并保持生效

    答案:在Linux中设置持久化环境变量需根据作用范围选择配置文件。用户级别可编辑~/.bashrc(交互式非登录Shell)或~/.profile(登录Shell),系统级别可修改/etc/environment(静态全局变量)、/etc/profile.d/下的脚本(动态变量)或/etc/bash…

    2026年9月11日 • 用户投稿
    200
  • 在Java中如何使用Map.Entry遍历Map集合

    Map.Entry是Map的内部接口,表示键值对,常用entrySet()结合for-each遍历;需删除元素时用Iterator避免ConcurrentModificationException;Java 8+可用forEach结合Lambda简化代码。 在Java中,Map.Entry 是 Ma…

    2026年9月11日
    000
  • Java里氏替换原则的核心思想是什么 在继承中如何体现

    里氏替换原则要求子类能透明地替换父类。在Java中,这体现为:子类不改变父类契约,包括参数不更严格、返回值可协变、不抛新受检异常;保持行为一致性,如正确重写计算逻辑;避免削弱父类能力,如正方形继承长方形导致setter行为异常;确保多态调用安全,父类引用调用子类对象方法时结果符合预期。只要子类确实是…

    2026年9月11日
    100
  • Zapier如何设置自定义字段_Zapier自定义字段的配置方法

    可通过Zapier内置功能、Webhooks、Formatter工具或Code步骤配置自定义字段:一、在支持的应用中直接添加自定义字段,输入键值对并绑定上游数据;二、使用Webhooks by Zapier发送含自定义字段的HTTP请求,手动构造数据结构;三、利用Formatter by Zapie…

    2026年9月11日
    900

发表回复

登录后才能评论
关注微信