我对这个感到有些困惑,我现在很难在网上找到类似的例子.
在PHP中工作,我希望从形式字段中获取输入,可以是表单中的"值列表","范围"或两者的组合;
3,5,6,9,11,23
Run Code Online (Sandbox Code Playgroud)
要么
3-20
Run Code Online (Sandbox Code Playgroud)
要么
3-6,8,12,14-50
Run Code Online (Sandbox Code Playgroud)
我想将这些作为整数数组返回,例如
3,4,5,6,8,12,14,15,16...
Run Code Online (Sandbox Code Playgroud)
我不打算把它们全部输出,但这个想法很明显!
是否有可用的功能,或者我从哪里开始写一个?
我有日期Ymd格式的数组,可以是相隔一天的十个设定日期的任意组合.
这是全套:
2011-01-01,2011-01-02,2011-01-03,2011-01-04,2011-01-05,2011-01-06,2011-01-07,2011-01-08,2011- 01-09,2011-01-10
从该集创建的数组可以是日期的任意组合 - 所有数组,其中一个,一些连续,全部连续等.
我现在把它们打印得很漂亮.例如,这是一个可能的结果:
2011-01-02
2011-01-03
2011-01-04
2011-01-08
(实际打印的内容更像是"1月2日星期五......",但我们会坚持使用简单的日期字符串)
我想压缩它,以便如果连续三天或更多天,那些就成了一个范围,例如上面的例子会变成:
2011-01-02至2011-01-04
2011-01-08
最终会成为:
1月2日星期日 - 1月4日星期二
1月8日星期六
有没有办法循环并检查时差,创建范围的开始时间和结束时间,然后收集落后者?
可能重复:
检查集合中的连续日期并返回范围
我有一个日期数组,它是从mySQL查询中获得的.我需要将数组分成多个数组,以便每个数组中的日期是连续的.
所以,如果我开始
$datearray = array("2013-05-05", "2013-05-06", "2013-05-07", "2013-05-08", "2013-06-19", "2013-06-20", "2013-06-21");
Run Code Online (Sandbox Code Playgroud)
我需要能够把它分成两部分
$firstdatearray = array("2013-05-05", "2013-05-06", "2013-05-07", "2013-05-08");
$seconddatearray = array("2013-06-29", "2013-06-30", "2013-07-01");
Run Code Online (Sandbox Code Playgroud)
最后我将能够打印
3月5日至8月3日,7月29日至7月1日
我怎样才能做到这一点?我不知道从哪里开始.
假设我在数组中有以下数字序列:
$numbers = array(1,3,2,23,24,25,26, 8)
Run Code Online (Sandbox Code Playgroud)
如何在范围内打印它们,例如:
数字是1-3,23-26,8.