我试图创建值的数组或一个字符串字符串置换获得的随机值,这是我过得怎么样:合并子数组,并从结果数组
function aliasName($string)
{
$names = [];
if (is_array($string)) {
foreach ($string as $str) {
$names[] = internalProcessing($str);
}
} else {
$names[] = internalProcessing($string);
}
return $names[array_rand($names)];
}
function internalProcessing($str)
{
$names = [];
$input = strtolower($str);
$length = strlen($input);
$counter = pow(2, $length);
for ($i = 0; $i < $counter; ++$i) {
$binaryStr = str_pad(decbin($i), $length, '0', STR_PAD_LEFT);
$variant = '';
for ($j = 0; $j < $length; ++$j) {
$variant .= ($binaryStr[$j] == '1') ? strtoupper($input[$j]) : $input[$j];
}
$names[] = $variant;
}
return $names;
}
$test1 = ['Mami', 'Abonis', 'Acierto', 'Alison', 'Bato', 'Chiste', 'Amada', 'Calor', 'Dato', 'Fiera', 'Exito'];
$test2 = 'mamI';
$test1Result = aliasName($test1);
$test2Result = aliasName($test2);
echo "\n test1 -------------------------------- \n";
var_export($test1Result);
echo "\n test2 -------------------------------- \n";
var_export($test2Result);
代码工作不错,但我有几个问题,我需要一些帮助。如果你在一个控制台脚本运行上面的代码中,你应该看到类似下面的输出:
# php test.php
test1 --------------------------------
array (
0 => 'abonis',
1 => 'aboniS',
2 => 'abonIs',
3 => 'abonIS',
4 => 'aboNis',
5 => 'aboNiS',
6 => 'aboNIs',
7 => 'aboNIS',
8 => 'abOnis',
9 => 'abOniS',
10 => 'abOnIs',
...
)
test2 --------------------------------
array (
0 => 'mami',
1 => 'mamI',
2 => 'maMi',
3 => 'maMI',
4 => 'mAmi',
5 => 'mAmI',
6 => 'mAMi',
7 => 'mAMI',
8 => 'Mami',
9 => 'MamI',
10 => 'MaMi',
...
)
test2
输出是不错,但test1
不是。如果你倾倒的$names
在internalProcessing()
(就在返回之前)的内容,你会得到这样的:
// var_export($names);
// return $names;
# php test.php
array (
0 => 'mami',
1 => 'mamI',
...
)array (
0 => 'abonis',
1 => 'aboniS',
...
)array (
0 => 'acierto',
1 => 'aciertO',
...
)array (
0 => 'alison',
1 => 'alisoN',
...
)array (
0 => 'bato',
1 => 'batO',
...
)array (
0 => 'chiste',
1 => 'chistE',
...
)array (
0 => 'amada',
1 => 'amadA',
...
)array (
0 => 'calor',
1 => 'caloR',
...
)array (
0 => 'dato',
1 => 'datO',
...
)array (
0 => 'fiera',
1 => 'fierA',
...
)array (
0 => 'exito',
1 => 'exitO',
...
)array (
0 => 'mami',
1 => 'mamI',
...
)
我需要的是输出转换成类似:
$result_array = array (
0 => 'mami',
1 => 'mamI',
...,
0 => 'abonis',
1 => 'aboniS',
...,
0 => 'acierto',
1 => 'aciertO',
...,
0 => 'alison',
1 => 'alisoN',
...,
0 => 'bato',
1 => 'batO',
...,
0 => 'chiste',
1 => 'chistE',
...,
0 => 'amada',
1 => 'amadA',
...,
0 => 'calor',
1 => 'caloR',
...,
0 => 'dato',
1 => 'datO',
...,
0 => 'fiera',
1 => 'fierA',
...,
0 => 'exito',
1 => 'exitO',
...,
0 => 'mami',
1 => 'mamI',
...
)
最后,如果输入是一个值的数组,然后我应该返回0和count($ result_array)之间的任何随机值。我尝试过array_merge()
,但因为我得到错误的结果,所以不适合我。任何人都可以在这里推动一下吗?
test1的输出有什么问题,那在test2中没有错? – trincot