根据值将数组分组

时间:2011-02-15 18:39:22

标签: php arrays

使用PHP,我试图根据值组将数组分成多个数组。这些组基于1到5之间的值。但这是困难的部分......

我需要循环遍历数组并将第一组介于1和5之间的值放在它们自己的数组中,然后将下一组介于1和5之间的值放在它们自己的数组中,依此类推。 / p>

但每组不会总是包括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
)

任何想法?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;

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