如何在 PHP 循环中区分首项、中间项与末项并分别渲染

发布时间 - 2025-12-25 00:00:00    点击率:

本文介绍如何在 php `foreach` 循环中精准识别数组的首项、中间项(前 n 项)和末项,并将它们分别输出到不同 html 结构中,适用于日历表头等场景。

在构建日历或表格类 UI 时,常需对数组元素做差异化渲染:例如,将一周七天中的前六天(周一至周六)放入

中,而将最后一天(周日)单独包裹在另一个 容器内。原代码使用简单 foreach,无法区分位置,因此需借助 PHP 的键值控制能力。

自 PHP 7.3 起,array_key_first() 和 array_key_last() 函数提供了安全、高效获取首尾键的方法。结合 $key => $val 的遍历语法,即可实现精准定位:

$daysOfWeek = ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'];
$calendar = '';

foreach ($daysOfWeek as $key => $day) {
    if ($key === array_key_first($daysOfWeek)) {
        // 首项(Lundi)——可选处理,此处暂不特殊渲染
        $calendar .= "$day";
    } elseif ($key === array_key_last($daysOfWeek)) {
        // 末项(Dimanche)→ 单独放入 div
        $calendar .= "$day";
    } else {
        // 中间项(Mardi ~ Samedi)→ 前6项中的其余5项 + 实际需求可扩展
        $calendar .= "$day";
    }
}

⚠️ 注意事项:

  • array_key_first() / array_key_last() 要求 PHP ≥ 7.3;若环境低于此版本,可用 key($arr) + end($arr); key($arr) 替代(注意重置内部指针);
  • 上述逻辑默认“末项即单独处理”,若明确要求「仅前6项用 ,第7项强制进 」,更稳妥的方式是结合 count() 和索引判断:
    $limit = 6;
    foreach ($daysOfWeek as $key => $day) {
        if ($key < $limit) {
            $calendar .= "$day";
        } else {
            $calendar .= "$day";
        }
    }

    该方式不依赖键类型(尤其适合数字索引数组),语义清晰,兼容性更好,推荐在多数业务场景中采用。最终生成的 HTML 结构语义明确、易于样式定制与无障碍访问。


# php  # html  # red  # count  # foreach  # 循环  # 指针  # class  # th  # ui  # 遍历  # 适用于  # 并将  # 可选  # 于此  # 暂不  # 而将  # 键值  # 差异化  # 六天 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel定时任务怎么设置_Laravel Crontab调度器配置  如何在阿里云完成域名注册与建站?  Python自动化办公教程_ExcelWordPDF批量处理案例  潮流网站制作头像软件下载,适合母子的网名有哪些?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Android自定义listview布局实现上拉加载下拉刷新功能  南京网站制作费用,南京远驱官方网站?  jquery插件bootstrapValidator表单验证详解  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  高防服务器:AI智能防御DDoS攻击与数据安全保障  深圳网站制作培训,深圳哪些招聘网站比较好?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel如何实现API资源集合?(Resource Collection教程)  零基础网站服务器架设实战:轻量应用与域名解析配置指南  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  教你用AI润色文章,让你的文字表达更专业  java ZXing生成二维码及条码实例分享  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  大连网站制作公司哪家好一点,大连买房网站哪个好?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  如何快速生成可下载的建站源码工具?  Python函数文档自动校验_规范解析【教程】  如何基于云服务器快速搭建个人网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  ,交易猫的商品怎么发布到网站上去?  如何快速搭建FTP站点实现文件共享?  如何注册花生壳免费域名并搭建个人网站?  bootstrap日历插件datetimepicker使用方法  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  JavaScript常见的五种数组去重的方式  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  iOS发送验证码倒计时应用  如何用美橙互联一键搭建多站合一网站?  Swift中switch语句区间和元组模式匹配  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  教学论文网站制作软件有哪些,写论文用什么软件 ?