
本文介绍如何在 php `foreach` 循环中精准识别数组的首项、中间项(前 n 项)和末项,并将它们分别输出到不同 html 结构中,适用于日历表头等场景。
在构建日历或表格类 UI 时,常需对数组元素做差异化渲染:例如,将一周七天中的前六天(周一至周六)放入
自 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免费学习笔记(深入)”;











