我有一个n值数组:
$input = array( object_a, object_b, object_c, ..., object_n );</code>
我尝试找到产生此输出的函数的名称:
$output = array(
array( object_a ), array( object_b ), ..., array( object_n ),
array( object_a, object_b ), array( object_a, object_c ), ..., array( object_a, object_n ),
array( object_b, object_c ), ..., array( object_b, object_n ),
...
array( object_a, object_b, object_c), ..., array( object_a, object_b, object_n),
...
array( object_a, object_b, object_c, ..., object_n)
);
它看起来像笛卡尔产品,但事实并非如此。
我尝试编写这个函数,并且我成功地创建了以下部分结果,但我仍然坚持使用'中间'分布:
$output = array(
array( object_a ), array( object_b ), ..., array( object_n ),
array( object_a, object_b, object_c, ..., object_n)
);
我认为中间部分可以通过函数递归调用生成,但我没有关于如何执行它的线索。
谢谢
这是我的功能的开始:
/**
*
* @param array $array this input array
* example:
* $array = array(
* A, B, C
* );
*
* @return array the result array
* example:
* $result = array(
* array( A ), ok
* array( B ), ok
* array( C ), ok
* array( A, B ),
* array( A, C ),
* array( B, C ),
* array( A, B, C ) ok
* )
*/
private function distribute($array)
{
$result = array();
if (is_array($array)) {
// add array( 'A', 'B', 'C' ) to result
$result[] = $array;
if (count($array)>1) {
// add array( 'A' ), array( 'B' ), array( 'C' ) to result
foreach ($array as $value) {
$result[] = array($value);
}
// help me to complete this function
}
}
return $result;
}
答案 0 :(得分:0)
评论帮助我找到功能名称。
这是stackoverflow上一个答案的链接 Finding the subsets of an array in PHP
指的是php手册 http://php.net/manual/en/function.shuffle.php#88408