2010-06-19 45 views
3

我有一個組數量可能不同的組列表,這些組中的項目數量也各不相同。我一直在想方設法從每個組中獲得1項物品的所有可能組合。獲取X個組中的N個項目的所有可能組合

獎勵:我還需要所有組合中沒有每個項目的組合。

我已經看到並完成了什麼是mentioned before,但這需要知道開始的組數。

爲了更具體地瞭解我在做什麼,我想生成具有基於產品選項的準確定價的產品。下面是一個例子列表:

Group/Item Example

因此,這將產生的產品,如:

UV上光,數量500,彩色4:0
UV上光,數量500,彩色4:1
等...

這些組中的每個組都有一個ID,每個項目都有一個Group_Item_ID。所以我可以把它們放在一個陣列中,例如:

$selections[1][...] // 1 = Coating 
$selections[2][...] // 2 = Quantity 
// ... = all selected Items in group 

希望我解釋得不錯。當組的數量也是可變的時,我只是無法圍繞如何做到這一點。

下面是組及其項的例子。數組:

Array 
(
[0] => Array 
    (
     [0] => 2 
     [1] => 3 
    ) 

[1] => Array 
    (
     [0] => 10 
     [1] => 11 
     [2] => 12 
    ) 

[2] => Array 
    (
     [0] => 16 
     [1] => 17 
    ) 

[3] => Array 
    (
     [0] => 19 
     [1] => 20 
    ) 
) 
+0

爲了澄清,你想從每個組中選擇一個元素的所有可能的組合? – 2010-06-19 23:18:46

+0

是的,所有組合都使用每個組中的一個元素。 – drewjoh 2010-06-21 03:18:35

回答

4

試試這個:

function c($groups, $prefix='') 
{ 
    $result = array(); 
    $group = array_shift($groups); 
    foreach($group as $selected) { 
     if($groups) { 
      $result = array_merge($result, c($groups, $prefix . $selected. ' ')); 
     } else { 
      $result[] = $prefix . $selected; 
     } 
    } 
    return $result; 
} 
+0

我認爲你正在嘗試一些東西!它似乎只給了我最後兩組數組的組合。我現在正在玩它,並會報告回來。 – drewjoh 2010-06-21 03:20:03

+0

好吧,我縮小了它只能得到陣列中最後2組的組合。而且它會多次組合。儘管如此,我仍然在努力。 – drewjoh 2010-06-21 04:38:57

+1

對不起!我在代碼中犯了一個小錯誤,現在已經修復了。 – Mewp 2010-06-21 12:18:50

相關問題