猿问

如何获取数组中的第一个和最后一个时间序列

我在一天中有一系列不同的时间,它们以 15 分钟的间隔上升。


Array

(

[0] => 12:00am

[1] => 12:15am

[2] => 12:30am

[3] => 12:45am

[4] => 1:00am

[5] => 1:15am

[6] => 1:30am

[7] => 1:45am

[8] => 2:00am

[9] => 3:15am

[10] => 3:30am

[11] => 3:45am

[12] => 4:00am

[13] => 1:00pm

[14] => 1:15pm

[15] => 1:30pm

);

我想要做的是,按顺序将它们组合在一起,然后将它们放入另一个单独的数组中


所以基于上面的数组,我会得到 3 个像这样的新数组


Array

(

[0] => 12:00am

[1] => 12:15am

[2] => 12:30am

[3] => 12:45am

[4] => 1:00am

[5] => 1:15am

[6] => 1:30am

[7] => 1:45am

[8] => 2:00am

);

12:00 是主阵列的开始,凌晨 2:00 是模式停止的地方,因为下一个是 3:15


array

{

[1] => 3:15am

[2] => 3:30am

[3] => 3:45am

[4] => 4:00am

)

凌晨 3:15 是主阵列中新模式的开始,凌晨 4:00 是模式停止的地方,依此类推。


我一直在尝试通过主数组循环并存储上一次以与当前循环匹配 + 15 分钟,但根本无法正常工作,感谢任何帮助,谢谢


HUH函数
浏览 202回答 3
3回答

吃鸡游戏

代码:<?php$times = [&nbsp; &nbsp; '12:00am',&nbsp; &nbsp; '12:15am',&nbsp; &nbsp; '12:30am',&nbsp; &nbsp; '12:45am',&nbsp; &nbsp; '1:00am',&nbsp; &nbsp; '1:15am',&nbsp; &nbsp; '1:30am',&nbsp; &nbsp; '1:45am',&nbsp; &nbsp; '2:00am',&nbsp; &nbsp; '3:15am',&nbsp; &nbsp; '3:30am',&nbsp; &nbsp; '3:45am',&nbsp; &nbsp; '4:00am',&nbsp; &nbsp; '1:00pm',&nbsp; &nbsp; '1:15pm',&nbsp; &nbsp; '1:30pm'];$previous = null;$results = [[]];foreach ($times as $time) {&nbsp; &nbsp; if (&nbsp; &nbsp; &nbsp; &nbsp; $previous === null ||&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (new \DateTime())->createFromFormat('h:ia', $time)->getTimestamp() -&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (new \DateTime())->createFromFormat('h:ia', $previous)->getTimestamp() === 15*60&nbsp; &nbsp; ) {&nbsp; &nbsp; &nbsp; &nbsp; $index = count($results)-1;&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; $index = count($results);&nbsp; &nbsp; }&nbsp; &nbsp; $results[$index][] = $time;&nbsp; &nbsp; $previous = $time;}echo "<pre>";var_dump($results);echo "</pre>";输出(html 视图):array(3) {&nbsp; [0]=>&nbsp; array(9) {&nbsp; &nbsp; [0]=>&nbsp; &nbsp; string(7) "12:00am"&nbsp; &nbsp; [1]=>&nbsp; &nbsp; string(7) "12:15am"&nbsp; &nbsp; [2]=>&nbsp; &nbsp; string(7) "12:30am"&nbsp; &nbsp; [3]=>&nbsp; &nbsp; string(7) "12:45am"&nbsp; &nbsp; [4]=>&nbsp; &nbsp; string(6) "1:00am"&nbsp; &nbsp; [5]=>&nbsp; &nbsp; string(6) "1:15am"&nbsp; &nbsp; [6]=>&nbsp; &nbsp; string(6) "1:30am"&nbsp; &nbsp; [7]=>&nbsp; &nbsp; string(6) "1:45am"&nbsp; &nbsp; [8]=>&nbsp; &nbsp; string(6) "2:00am"&nbsp; }&nbsp; [1]=>&nbsp; array(4) {&nbsp; &nbsp; [0]=>&nbsp; &nbsp; string(6) "3:15am"&nbsp; &nbsp; [1]=>&nbsp; &nbsp; string(6) "3:30am"&nbsp; &nbsp; [2]=>&nbsp; &nbsp; string(6) "3:45am"&nbsp; &nbsp; [3]=>&nbsp; &nbsp; string(6) "4:00am"&nbsp; }&nbsp; [2]=>&nbsp; array(3) {&nbsp; &nbsp; [0]=>&nbsp; &nbsp; string(6) "1:00pm"&nbsp; &nbsp; [1]=>&nbsp; &nbsp; string(6) "1:15pm"&nbsp; &nbsp; [2]=>&nbsp; &nbsp; string(6) "1:30pm"&nbsp; }}

泛舟湖上清波郎朗

它是简单的逻辑和增强代码<?php$input = Array("12:00am","12:15am","12:30am","12:45am","1:00am","1:15am","1:30am","1:45am","2:00am","3:15am","3:30am","3:45am","4:00am","1:00pm","1:15pm","1:30pm",);$periods = [];foreach($input as $time) {&nbsp; &nbsp; $hour = substr($time, 0, strpos($time, ':'));&nbsp; &nbsp; $partOfDay= substr($time, strlen($time) - 2);&nbsp; &nbsp; $index = ($hour== "12") ? "0" : floor($hour/2.00001);&nbsp; &nbsp; $periods[$index.":".$partOfDay][] = $time;}echo "<pre>";var_dump($periods);echo "</pre>";exit();?>已编辑根据OP的逻辑,我简化了逻辑,这是代码。$periods = array();$index = 0;$old_value = 0;foreach($input as $time) {&nbsp; &nbsp; //converting time to minutes&nbsp; &nbsp; $new_value = (intval(date("H",strtotime($time)))*60) + intval(date("i",strtotime($time)));&nbsp; &nbsp; if($new_value > ($old_value+15)){&nbsp; &nbsp; &nbsp; &nbsp; $index++;&nbsp; &nbsp; }&nbsp; &nbsp; $periods[$index][] = $time;&nbsp; &nbsp; $old_value = $new_value;}

当年话下

这是一个函数:<?php$input = [&nbsp; &nbsp; "12:00am",&nbsp; &nbsp; "12:15am",&nbsp; &nbsp; "12:30am",&nbsp; &nbsp; "12:45am",&nbsp; &nbsp; "1:00am",&nbsp; &nbsp; "1:15am",&nbsp; &nbsp; "1:30am",&nbsp; &nbsp; "1:45am",&nbsp; &nbsp; "2:00am",&nbsp; &nbsp; // gap here&nbsp; &nbsp; "3:15am",&nbsp; &nbsp; "3:30am",&nbsp; &nbsp; "3:45am",&nbsp; &nbsp; "4:00am",&nbsp; &nbsp; // gap here&nbsp; &nbsp; "1:00pm",&nbsp; &nbsp; "1:15pm",&nbsp; &nbsp; "1:30pm",];$period = 15;$result = split_periods($input, $period);var_dump($result);function split_periods($times, $period) {&nbsp; &nbsp; $standard_diff = $period * 60;&nbsp; &nbsp; $separated = [];&nbsp; &nbsp; $last_time = null;&nbsp; &nbsp; $n = 0;&nbsp; &nbsp; foreach ($times as $time) {&nbsp; &nbsp; &nbsp; &nbsp; $current_time = strtotime($time);&nbsp; &nbsp; &nbsp; &nbsp; if ($last_time) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $diff = $current_time - $last_time;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($diff != $standard_diff) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ++$n;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; $separated[$n][] = $time;&nbsp; &nbsp; &nbsp; &nbsp; $last_time = $current_time;&nbsp; &nbsp; }&nbsp; &nbsp; return $separated;}为函数提供时间数组,以及预期的时间间隔(以分钟为单位)。它返回一个数组数组,如下所示。Array(&nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => 12:00am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] => 12:15am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2] => 12:30am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [3] => 12:45am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [4] => 1:00am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [5] => 1:15am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [6] => 1:30am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [7] => 1:45am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [8] => 2:00am&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [1] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => 3:15am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] => 3:30am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2] => 3:45am&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [3] => 4:00am&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [2] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => 1:00pm&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] => 1:15pm&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2] => 1:30pm&nbsp; &nbsp; &nbsp; &nbsp; ))
随时随地看视频慕课网APP
我要回答