可能重複:
Permutations - all possible sets of numbers使用PHP構建概率樹?
我有了一個選項列表的數組, 每個選項都是獨特的,不可重複。
我想建立使用這些選項的概率樹:
$options = array('1','2','3','4','A','E','I','O');
所以一個有效的行可能是1-2-E-3-O-I-4-A
我怎樣才能做到這一點? (或至少將我指向正確的方向!)
可能重複:
Permutations - all possible sets of numbers使用PHP構建概率樹?
我有了一個選項列表的數組, 每個選項都是獨特的,不可重複。
我想建立使用這些選項的概率樹:
$options = array('1','2','3','4','A','E','I','O');
所以一個有效的行可能是1-2-E-3-O-I-4-A
我怎樣才能做到這一點? (或至少將我指向正確的方向!)
<?php
function pc_permute($items, $perms = array()) {
if (empty($items)) {
print join('-', $perms) . "<br />";
} else {
for ($i = count($items) - 1; $i >= 0; --$i) {
$newitems = $items;
$newperms = $perms;
list($foo) = array_splice($newitems, $i, 1);
array_unshift($newperms, $foo);
pc_permute($newitems, $newperms);
}
}
}
$options = array('1','2','3','4','A','E','I','O');
$mass = pc_permute($options);
?>
遞歸可能是最簡單的方法來實現這一點,但它不會很好地擴展到大型數據集。
基本上寫一個函數,該函數需要一個選項數組,打斷一個調用本身。
其實你想找到所有'$ options'數組的排列? – fsenart
請檢查這[問題](http://stackoverflow.com/questions/5506888/permutations-all-possible-sets-of-numbers)。這可能會有所幫助。 –