php中range生成连续数组_php指定步长字符序列与日期范围生成

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()配合实现日期序列。

  • 先用strtotime将起止日期转为时间戳
  • 使用range()以86400秒(一天)为步长生成时间戳数组
  • 再用date()格式化每个时间戳为可读日期
  • 示例代码:

$dates = array_map('date', array_fill(0, count($ts), 'Y-m-d'), range(strtotime('2025-01-01'), strtotime('2025-01-05'), 86400));

这会生成从2025年1月1日到5日的日期字符串数组。

基本上就这些。合理使用range()能简化很多循环生成数组的场景,特别是配合字符、数字步长或时间处理时特别高效。