PHP:如何在值的间隙处拆分数组?

时间:2014-08-10 16:04:06

标签: php arrays

我有一个整数数组,其中有一个中断(甚至可能是多个中断),我需要将数组拆分为存在的数据,这样:

$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开始和结束的值),因此我的原始数组包含在相关时间范围内的许多分钟。由于有些人可能只注册了部分时间,我会减去已经涵盖的值,让我有一些需要填充的时间。我希望将它们解析为多个数组(我真的只需要最小值和最大值,但我可以轻松地将它们隔离开来),以便我可以使用它们来突出显示开放时间。希望这不会太令人困惑 - 谢谢所有已回复的人!

1 个答案:

答案 0 :(得分:0)

好问题,你走了。每次数字序列中断时(如测试用例所示),此代码将创建一个新的子数组。

<?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);

<强> Fiddle

<强> Another Fiddle with more data