使用PHP创建包含另一个自然数数组的所有排列的数组
我已经用$my_array=range1,3创建了一个数组,我想创建一个数组,包含这个数组的所有排列1,2,3 1,3,2,1,3 范围函数中的第二个数字可以更改,它可以是4、5、7、50,而不是3。代码来源:使用PHP创建包含另一个自然数数组的所有排列的数组,php,arrays,permutation,Php,Arrays,Permutation,我已经用$my_array=range1,3创建了一个数组,我想创建一个数组,包含这个数组的所有排列1,2,3 1,3,2,1,3 范围函数中的第二个数字可以更改,它可以是4、5、7、50,而不是3。代码来源: 关于笛卡尔积的答案可能已经很多了,请尝试搜索。 function permute($str) { /* If we only have a single character, return it */ if (strlen($str) < 2) {
关于笛卡尔积的答案可能已经很多了,请尝试搜索。
function permute($str) {
/* If we only have a single character, return it */
if (strlen($str) < 2) {
return array($str);
}
/* Initialize the return value */
$permutations = array();
/* Copy the string except for the first character */
$tail = substr($str, 1);
/* Loop through the permutations of the substring created above */
foreach (permute($tail) as $permutation) {
/* Get the length of the current permutation */
$length = strlen($permutation);
/* Loop through the permutation and insert the first character of the original
string between the two parts and store it in the result array */
for ($i = 0; $i <= $length; $i++) {
$permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
}
}
/* Return the result */
return $permutations;
}
$array_of_natural_numbers = range(1, 5);
$string_of_natural_numbers = implode("",$array_of_natural_numbers);
$permutations = permute($string_of_natural_numbers);