2011-09-07 43 views
0

這使我瘋了,但我一直在這個全部中午奮鬥(即時通訊GMT + 2;))。如何計算/生成一個數組中的所有可能的值的字符串?

我想做一個公平的(我相信,但意識到事實證明,否則..)簡單的任務。

可以說我有一個數組,看起來像這樣:

Array 
(
    [0] => Array 
     (
      [OptionID] => 8748 
      [Values] => Array 
       (
        [0] => 11614 
        [1] => 11615 
       ) 
     ) 
    [1] => Array 
     (
      [OptionID] => 8749 
      [Values] => Array 
       (
        [0] => 11616 
        [1] => 11617 
       ) 
     ) 
) 

這個數組是用於生成與產品的所有可能的選擇。可以說OptionID 8748的意思是「大小」,該數組中的值是'L'&'XL'。 OptionID 8749可以是「顏色」,其值爲「紅色」和「黑色」。

我想實現簡單的任務來獲取產品的四個獨特的組合,像一個字符串:

11614 + 11616 11614 + 11617 11615 + 11616 11615 + 11617

但隨後,不同的產品可能有第三種產品選擇,所以它應該能夠以無限的深度工作。

回答

1

基本上

$result = array_cartesian(array_pluck($a, 'Values')); 

和這裏的輔助功能:

function array_pluck($a, $key) { 
    $r = array(); 
    foreach($a as $v) 
     $r[] = $v[$key]; 
    return $r; 
} 

function array_cartesian($_) { 
    if(count($_) == 0) 
     return array(array()); 
    $a = array_shift($_); 
    $c = array_cartesian($_); 
    $r = array(); 
    foreach($a as $v) 
     foreach($c as $p) 
      $r[] = array_merge(array($v), $p); 
    return $r; 
} 
+0

你的先生,你是我心目中的英雄今天!非常感謝! +10 – Ben

相關問題