可能重复:
排列 - 所有可能的数字集
我有一个包含选项列表的数组,每个选项都是唯一的,不能重复。
我想使用以下选项构建概率树:
$options = array('1','2','3','4','A','E','I','O');
所以一条有效的线可能是1-2-E-3-O-I-4-A
我怎样才能做到这一点?(或者至少指出我正确的方向!)
可能重复:
排列 - 所有可能的数字集
我有一个包含选项列表的数组,每个选项都是唯一的,不能重复。
我想使用以下选项构建概率树:
$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 );
?>