首先,我不知道我的問題標題是否正確,如果我造成任何混淆,我很抱歉。
所以我有一組陣列,我需要在樹方法上組合它以成為任何可能的新陣列集。
這是我的陣列:
$layer = array(
array(18,19,20,21,22),
array(1,2,7,8,14),
array(3,4,9,10,15),
array(5,6,12,13,16),
array(11),
array(17)
)
我期待的是將這些陣列值組合成具有樹方法組合的新陣列集。
Array (
[0] => 18-1-3-5-11-17
[1] => 18-1-3-6-11-17
[2] => 18-1-3-12-11-17
[3] => 18-1-3-13-11-17
[4] => 18-1-3-16-11-17
[5] => 18-1-4-5-11-17
[6] => 18-1-4-6-11-17
[7] => 18-1-4-12-11-17
........
........
........
[x] => 22-14-15-16-11-17
)
正如您在上面看到的,組合可能與陣列值相互組合的數量一樣多。
我可以輕松地將兩個陣列與以下代碼結合起來:
$i = 0;
$arr = array();
for ($x = 0; $x < count($layer_files[$i]); $x ) {
for ($y = 0; $y < count($layer_files[($i 1)]); $y ) {
$arr[] = $layer_files[$i][$x] . '-' . $layer_files[($i 1)][$y];
}
}
$i ;
但是,我不知道如何按照我上面的預期組合兩個以上的陣列。
希望你明白我想問什么,謝謝你的幫助。
uj5u.com熱心網友回復:
您可以使用遞回:
function combinations($sets, $i=0) {
if ($i >= count($sets)) return [[]];
foreach($sets[$i] as $value) {
foreach(combinations($sets, $i 1) as $combi) {
$results[] = [$value, ...$combi];
}
}
return $results;
}
$matrix = combinations($layer);
// Convert each combination to a string (using "-" separator)
foreach($matrix as $combo) {
$results[] = implode("-", $combo);
}
$results 將具有所需的結構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/400861.html
