我有一個數組可以包含任意數量的元素。每個元素都包含一個ID和一個名爲「options」的數組(也包含任意數量的元素)。這裏是結構:如何構建遞歸函數來列出多級數組的所有組合?
$arr = array(
array('id' => 10, 'options' => array(3, 5)),
array('id' => 15, 'options' => array(2, 4, 8, 9)),
array('id' => 20, 'options' => array(2, 6, 7)),
// ... any number of elements
);
我想創建另一個基於此的數組。每個鍵都是ID字段+「選項」數組值,該值是下一個元素的數組,然後是下一個元素,依此類推。基本上,它應該給我上述陣列的每個組合(有點像一個樹),在爲了使陣列被定義:
$new = array(
'10-3' => array(
'15-2' => array('20-2', '20-6', '20-7'),
'15-4' => array('20-2', '20-6', '20-7'),
'15-8' => array('20-2', '20-6', '20-7'),
'15-9' => array('20-2', '20-6', '20-7')
),
'10-5' => array(
'15-2' => array('20-2', '20-6', '20-7'),
'15-4' => array('20-2', '20-6', '20-7'),
'15-8' => array('20-2', '20-6', '20-7'),
'15-9' => array('20-2', '20-6', '20-7')
)
);
由於數組可以包含任意數量的元素,我假設我將需要包含某種類型的遞歸函數。我在遞歸方面沒有太多經驗,所以對我來說這是一項非常艱鉅的任務。
我可以從構建這個遞歸函數的位置得到一些指針嗎?
謝謝本,我真的很感激它!這給了我一個我需要的好主意。我會嘗試一下並讓你知道。 – 2009-07-25 21:54:04
您示例中的邏輯非常完美。再次感謝! – 2009-07-25 22:26:45