如果模式是123456,请说。
在php中,有可能得到数字的确切长度为6位,数字在生成的数字中不应重复多次。
456136 -- all digit are unique right
56136 -- wrong digit 4 is missing
456436 -- wrong digit 4 repeats
答案 0 :(得分:5)
答案 1 :(得分:1)
这应该给你0次重复:
$random = array();
while(count($random) != 6)
{
$random[] = rand(0, 9);
$random = array_unique($random);
}
$random = implode('', $random);
答案 2 :(得分:1)
您可以先使用str_split()
$pattern = '123456';
$digits = str_split($pattern);
然后,您可以在该数组上使用shuffle()
,因此其元素按随机顺序排列:
shuffle($digits);
最后,你可以implode()
随机化数组回到字符串:
$result = implode('', $digits);
转储该变量的内容:
var_dump($result);
你会得到这样的结果:
string(6) "645132"
string(6) "462513"
string(6) "542316"
始终为六位数字,始终为您指定的数字;并且没有比模式中指定的次数多。
答案 3 :(得分:0)
你可以试试这个:
$nums = array();
while(count($nums)<=6){
$rand = rand(0,9);
if(!in_array($rand, $nums)){
$nums[] = $rand;
}
}
echo implode('',$nums);
第一次运行:
http://codepad.org/31AKqeYz
第二次运行: http://codepad.org/ckuUQCP3