Php 生成包含所有字符排列的字符串,并设置位数
我想生成一个字符串,它将生成一组字符的所有排列 然而,我不想任何数字重复3次,(只有两次),我想做得更有效。。。我在下面解决了它,但我知道它可以更有效。。。它现在有285个字符长Php 生成包含所有字符排列的字符串,并设置位数,php,permutation,Php,Permutation,我想生成一个字符串,它将生成一组字符的所有排列 然而,我不想任何数字重复3次,(只有两次),我想做得更有效。。。我在下面解决了它,但我知道它可以更有效。。。它现在有285个字符长 <?php function arrayToString(&$array, $string) { //var_dump( $array); //var_dump( $string); $res = ""; for ($i = 0; $i < count($arr
<?php
function arrayToString(&$array, $string)
{
//var_dump( $array);
//var_dump( $string);
$res = "";
for ($i = 0; $i < count($array) - 1; $i++)
{
//echo "i = $i<br />";
//echo "array[i] = {$array[$i]}<br /><br />";
$res .= $string[$array[$i]];
}
return $res;
}
function incrementArray(&$array, $max)
{
$index = count($array) - 1;
return addOneToArray($array, $index, $max);
}
function addOneToArray(&$array, $index, $max)
{
if ($index < 0 )
return 0;
if ($array[$index] == $max - 1)
{
$array[$index] = 0;
return addOneToArray($array, $index - 1, $max);
}
$array[$index] += 1;
return 1;
}
function getPermutations ($source)
{
$len = count($source);
$resString = "";
$array = [0,0,0,0,0];
$i = 1;
while ($i > 0)
{
$testString = arrayToString($array, $source);
// echo "test string ". $testString;
if ( strpos($resString, $testString) === false)
$resString .= $testString;
$i = incrementArray($array, count($source));
}
return $resString;
}
$source = ["3", "5", "7", "9"];
echo getPermutations($source);
// $resString;
我不知道你期望的结果是什么。只是一个没有3个重复整数的随机数?我期望333333533373339335333553357335933733337533773379等…我不知道你期望的结果是什么。只是一个没有3个重复整数的随机数?我期待着3333335373339335333553357335933733337533773379等等。。。