2011-02-15 111 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; 

未經測試。 (編輯:更正了一些明顯的錯誤。)