我有一个整数数组,其中有一个换行符(甚至可能有多个换行符),我需要在换行符存在的地方拆分数组,以便:
$input = (1,2,3,6,7,8,11,12,13)
$output[1] = (1,2,3)
$output[2] = (6,7,8)
$output[3] = (11,12,13)
我正在处理一个相当大的数据集(时间),所以内存优化对我来说是一个棘手的问题($i++有点棘手)。
谢谢你的帮助!
更多信息:
我从一个大的时间范围开始(开始和结束的strtotime/60值),因此我的原始数组包含在问题的时间范围内的多少分钟。由于有些人可能只注册了这段时间的一部分,所以我减去了已经覆盖的值,留下了一个需要填充的时间数组。我希望将它们解析为多个数组(我实际上只需要最小值和最大值,但我可以很容易地隔离它们),以便我可以使用它们来突出显示打开时间。希望这不会让你太困惑-感谢所有已经回复的人!
问得好。这段代码将在每次数字序列中有一个中断时创建一个新的子数组(如您的测试用例所示)。
<?php
$input = array(1,2,3,6,7,8,11,12,13);
sort($input);
$i=0;
$output=array();
$previous=NULL;
foreach($input as $value)
{
if($value>$previous+1)
{
$i++;
}
$output[$i][]=$value;
$previous=$value;
}
print_r($output);
小提琴