2011-02-15 80 views
0

使用PHP,我试图根据值组将数组分成多个数组。这些组是基于1和5之间的值。但这里的难题......基于值将数组分解为组

我需要遍历数组并将第一组值置于1和5之间的数组中,然后是他们自己的数组中的1到5之间的下一组值,依此类推。

但是每个组不会总是包含1,2,3,4,5。有些团体可能是随机的。

实例:

1,1,2,2,3,4,5 - 这将是一组

1,2,3,4,4,4 - 这将是一个组

1,2,3,3,5 - 这将是一组

2,2,3,3,5 - 这将是一组

所以我不能只是测试具体数字。

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 4 
    [4] => 5 
    [5] => 1 
    [6] => 2 
    [7] => 3 
    [8] => 4 
    [9] => 4 
    [10] => 1 
    [11] => 1 
    [12] => 3 
    [13] => 4 
    [14] => 5 
) 

任何想法?

回答

1

我只是检查当前值是否大于以前的值,如果是,则开始一个新的组。

$groups = array(); 
$groupcount = 1; 

foreach($array as $key=>$value) 
{ 
    if($key > 0) // there's no "previous value" for the first entry 
    { 
     if($array[$key] < $array[$key-1]) 
     { 
      $groupcount = $groupcount + 1; 
     } 
    } 

    $group[groupcount][] = $value; 
} 
+0

谢谢,效果很好。 – Mark 2011-02-15 19:10:15

1

这是你在找什么?

$groups = array(); 
$cur = array(); 
$prev = 0; 
foreach ($numbers as $number) 
{ 
    if ($number < $prev) 
    { 
    $groups[] = $cur; 
    $cur = array(); 
    } 
    $cur[] = $number; 
    $prev = $number; 
} 
if ($cur) $groups[] = $cur; 

未经测试。 (编辑:更正了一些明显的错误。)