Ищете имя функции массива?

У меня есть массив 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

Решение

Комментарии помогают мне найти имя функции.

Вот ссылка на stackoverflow предыдущий ответ
Нахождение подмножеств массива в PHP

что относится к руководству PHP
http://php.net/manual/en/function.shuffle.php#88408

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]