range()函数可生成数字、字符及日期序列,支持正序、逆序与步长控制,结合strtotime和date还能生成日期数组,显著简化循环操作。

PHP中的range()函数非常实用,可以快速生成一组连续的值,不仅支持数字,还能处理字符和日期范围。它还可以结合步长参数灵活控制生成序列的方式。
使用range()生成数字与字符序列
range()最基本用法是生成从起始值到结束值之间的连续数组。只需要传入两个参数:开始和结束值。
- 数字序列:range(1, 5) 返回 [1, 2, 3, 4, 5]
- 递减序列:range(5, 1) 自动按降序生成 [5, 4, 3, 2, 1]
- 字符序列:range('a', 'e') 得到 ['a', 'b', 'c', 'd', 'e']
- 大写字母:range('A', 'Z') 可快速生成字母表
指定步长生成等差序列
第三个可选参数允许设置步长(step),控制每次递增或递减的幅度。
- 偶数序列:range(2, 10, 2) → [2, 4, 6, 8, 10]
- 奇数序列:range(1, 9, 2) → [1, 3, 5, 7, 9]
- 反向步长:range(10, 0, -2) → [10, 8, 6, 4, 2, 0]
- 注意:步长不能为0,否则返回空数组
生成日期范围数组
虽然range()不直接支持日期对象,但可以通过时间戳和strtotime()配合实现日期序列。
立即学习“PHP免费学习笔记(深入)”;
- 先用
strtotime将起止日期转为时间戳 - 使用
range()以86400秒(一天)为步长生成时间戳数组 - 再用
date()格式化每个时间戳为可读日期 - 示例代码:
$dates = array_map('date', array_fill(0, count($ts), 'Y-m-d'), range(strtotime('2024-01-01'), strtotime('2024-01-05'), 86400));
这会生成从2024年1月1日到5日的日期字符串数组。
基本上就这些。合理使用range()能简化很多循环生成数组的场景,特别是配合字符、数字步长或时间处理时特别高效。











