本文介绍如何在 php `foreach` 循环中精准识别并分别处理数组的首项、中间项和末项,特别适用于将前 n 项与最后一项分组渲染(如日历表头布局),并提供安全、可读性强的实现方案。
在 Web 开发中,常见需求是将数组元素按语义分组渲染——例如日历表头需将周一至周六(前 6 天)放入一个
日(第 7 天)单独置于另一容器中。原始代码中简单遍历会导致所有 PHP 7.3+ 引入了两个关键函数:array_key_first() 和 array_key_last(),它们能安全获取关联/索引数组的首个与最后一个键(无需依赖 key() 或 end() 等易出错操作)。结合 foreach 的 $key => $value 形式,即可精确判断位置:
$daysOfWeek = ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'];
$calendar = '';
foreach ($daysOfWeek as $key => $day) {
if ($key === array_key_first($daysOfWeek)) {
// 首项:开始构建第一组容器
$calendar .= "$day ";
} elseif ($key === array_key_last($daysOfWeek)) {
// 末项:关闭第一组,开启新容器并写入
$calendar .= "$day ";
} else {
// 中间项:追加到第一组
$calendar .= "$day ";
}
}✅ 优势说明:
⚠️ 注意事项:
最终输出的 HTML 结构清晰分离工作日与周末,便于 CSS 样式定制与无障碍语义增强。