[英]Recursive PHP Tree (permutations)
我正在尋找一個函數,它創建一個數組列表的所有排列(列表是動態的)。 現在我發現了2篇文章http://dannyherran.com/2011/06/finding-unique-array-combinations-with-php-permutations/和使用PHP關聯數組查找笛卡爾積 。 但我不想將它們存儲為多個數組,我想為每種可能性添加每個數組,以便稍后使用它們。
實際上我想將每個數組與另一個數組相乘。
例如:
$array = array(
array(
1,
2
),
array(
'A',
'B',
'C'),
array(
'I',
'II')
);
以這種形式:
Array
(
[0] => Array
(
[0] => 1
[1] => Array
(
[0] => Array
(
[0] => A
[1] => Array
(
[0] => I
[1] => II
)
)
[1] => Array
(
[0] => B
[1] => Array
(
[0] => I
[1] => II
)
)
[2] => Array
(
[0] => C
[1] => Array
(
[0] => I
[1] => II
)
)
)
)
[1] => Array
(
[0] => 2
[1] => Array
(
[0] => Array
(
[0] => A
[1] => Array
(
[0] => I
[1] => II
)
)
[1] => Array
(
[0] => B
[1] => Array
(
[0] => I
[1] => II
)
)
[2] => Array
(
[0] => C
[1] => Array
(
[0] => I
[1] => II
)
)
)
)
)
我認為這個重要的例子讓我的問題變得清晰。 對於這種類型的數組,我創建了一個函數:foreach($ array [1] as $ value){$ return1 [] = array($ value,$ array [2]); }
foreach ($array[0] as $value) {
$return[] = array($value, $return1);
}
print_r($return);
現在我想在遞歸函數中創建這個函數(因此它變得有動力)但我卡住了。 我想將數量的數量傳遞給函數然后迭代。
function createTree($array, $loops=3){
$b = $array[$loops-2];
foreach ($b as $v) {
$return[] = array($v, createTree($return, $loops-1));
}
print_r($return);
}
也許有另外一個解決方案來增加陣列? 但是不是遞歸的函數對我來說很容易,但是讓它遞歸...
謝謝你的幫助
function createTree($array){
switch(count($array)) {
case 0:
die('Illegal argument.');
case 1:
return $array[0];
default:
$lastArray = array_pop($array);
$subArray = createTree($array);
foreach ($lastArray as $item) {
$return[] = array($item, $subArray);
}
return $return;
}
}
var_dump(createTree(array_reverse($array)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.