Вот массив.
$item = array('A', 'B', 'C', 'D');
Я хочу перечислить все возможные ордера в этом массиве, например:
A A, B А, В, С А, В, С, D А, С А, С, D А, С, В ... B, A В, А, С ....
Как я могу это сделать?
перестановок , которые вы хотите знать, можно выполнить с помощью этого алгоритма и применения в цикле для подмножеств.
Инициализируйте первую перестановку с помощью<1 <2 ... <p>пока существует мобильное целое число найдите наибольшее мобильное целое число k swap k и смежное целое число, на которое оно смотрит обратное направление всех целых чисел больше k
Инициализируйте первую перестановку с помощью<1 <2 ... <p>пока существует мобильное целое число
найдите наибольшее мобильное целое число k
swap k и смежное целое число, на которое оно смотрит
обратное направление всех целых чисел больше k
См. этот вопрос для получения дополнительной информации
Вы можете использовать эту рекурсивную функцию:
<code>function recursive_permutations($items,$perms = array( )) { static $list; if (empty($items)) { $list[] = join(',', $perms); } else { for ($i = count($items)-1;$i>=0;--$i) { $newitems = $items; $newperms = $perms; list($foo) = array_splice($newitems, $i, 1); array_unshift($newperms, $foo); recursive_permutations($newitems, $newperms); }; return $list; }; } $perms = recursive_permutations(array('A', 'B', 'C', 'D')); echo '<pre>' . print_r($perms, true) . '