我有这些变量:
$letters = array('a','b','c','1','2','3', .....);
$min_length = any number ;
$max_length = any number;
$must_include = array('letter1','letter2', .....); // list of letters and numbers that must be in combination
$must_exclude = array('letter3','letter3', .....); // list of letters and numbers that must not be in combination
我需要一个函数来根据给定的变量打印所有可能的组合。
我如何完成此任务?
答案 0 :(得分:-1)
可以使用php的array_*
函数解决此孤立的问题。
首先,让我们定义变量:
$letters = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$min_length = 5;
$max_length = 15;
$must_include = array('a','e', 't', '7');
$must_exclude = array('4','q', 'j', '9');
对于更简单的解决方案,让我们基于$min_length
和$max_length
值将固定长度的结果定义为变量:
$actual_length = rand($min_length, $max_length);
下一步,我们将其删除and
,以准备干净的字母:
$clean_letters = array_diff($letters, $must_exclude);
$clean_letters = array_diff($letters, $must_include);
请注意,我删除
$must_include
和$must_exclude
的原因是,由于下面将包含$must_include
,因此必须将其包括在内。
现在,获取实际结果:
$result = $must_include;
$result = array_merge($result, array_rand($letters, $actual_length - sizeof($result)));
在此步骤中,我默认将
$result
设为$must_include
,然后将其与$letters
的随机值合并为$actual_length
的大小减去{ {1}}的大小。
以上所有步骤都将导致在$must_include
中始终带有字母的值,并省略$must_include
的字母。
下面的完整脚本:
$must_exclude