【发布时间】:2019-06-24 13:51:28
【问题描述】:
我有这个数组:
$array = array( 57, 53, 52 );
我想获取这些数字的所有唯一组合(不相关的项目顺序)。
我想要的结果如下:
// 57
// 57, 53
// 57, 53, 52
// 53
// 52
// 52, 57
我正在使用这个函数,但这会返回值的每个组合,因为我不关心顺序,它们都是相同的结果,只是顺序不同:
function my_function( $array ) {
$combinations = array();
$words = sizeof( $array );
$combos = 1;
for( $i = $words; $i > 0; $i-- ) {
$combos *= $i;
}
while( sizeof( $combinations ) < $combos ) {
shuffle($array);
$combo = implode( " ", $array );
if( !in_array( $combo, $combinations ) ) {
$combinations[] = $combo;
}
}
return $combinations;
}
print_r( my_function( $array ) );
我怎样才能做到这一点?
【问题讨论】:
-
order of the items not relevant=> 所以我假设53, 57和57, 53是一样的。 -
是的,我的场景是一样的
-
@Steveo 你应该更新你的例子!
-
2^n 组合不少...
-
递归函数的一个很好的例子