我有一个脚本,可以创建两组数字: 1.随机数 2.重复编号的匹配编号列表
但是重复编号的匹配编号列表无法正常工作。
让我举个例子: 随机数 5-14-5-4-15-12-8-10-18-13-25-15-14-2-7-24-22-13-22-16-18-10-11-25- 2-18-9-19-8-1-16-1-23-0-16-17-23-21-20-22-21-9-4-20-24-19-16-9-17 < / p>
比赛号码 3-11-2-6-2-3-2-2-2-2-2-4-3-2-4-3-4-2-2-2-2-2-2-2-2- 2
如果您查看随机数,则会看到第一个匹配数是正确的。在三个数字之后,我们有一个匹配项,因此匹配数字为3。然后我们从5开始计数,下一个匹配数字也是正确的,它是11,在数字15处结束。但是,在两个数字之后应该有一个匹配项,但是这个无法正常工作。
有人可以在这里帮助我吗?
<?php
$existing = [];
$repeat_numbers = [];
for ($rnd=1;$rnd<=50;$rnd++)
{
$randoms[] = mt_rand(0,25);
}
echo implode('-',$randoms).PHP_EOL;
echo "<br><br>";
$i = 1;
foreach($randoms as $rnd){
if(in_array($rnd,$existing)){
$repeat_numbers[] = $i;
$i=1;
}
$existing[] = $rnd;
$i++;
}
echo implode('-',$repeat_numbers);
?>
答案 0 :(得分:0)
根据您的预期比赛,“比赛号码应为:3-11-8-8-7-6-8”
<?php
$existing = [];
$repeat_numbers = [];
$randoms = explode('-','5-14-5-4-15-12-8-10-18-13-11-25-15-14-2-7-24-22-13-22-16-18-10-11-25-2-18-9-19-8-1-16-1-23-0-16-17-23-21-20-22-21-9-4-20-24-19-16-9-17');
//print_r($randoms);
$i = 0;
foreach($randoms as $rnd){
$i++;
if(in_array($rnd,$existing)){
$repeat_numbers[] = $i;
$i=1;
$existing = [];
}
$existing[] = $rnd;
}
echo implode('-',$repeat_numbers);
?>
工作演示: https://3v4l.org/HbFnV
然后只需添加它而不是硬编码的$random
字符串变量,并照常使用其余代码。
<?php
$existing = [];
$repeat_numbers = [];
for ($rnd=1;$rnd<=50;$rnd++)
{
$randoms[] = mt_rand(0,25); // see this block for generating randoms
}
$i = 0;
foreach($randoms as $rnd){
$i++;
if(in_array($rnd,$existing)){
$repeat_numbers[] = $i;
$i=1;
$existing = [];
}
$existing[] = $rnd;
}
echo implode('-',$repeat_numbers);
?>
工作演示: https://3v4l.org/TvD4S