我想回显每个重复的总数

时间:2019-07-12 15:29:52

标签: php

我创建了一个小脚本,该脚本为我提供了随机数。现在,我想创建一个包含重复数字的随机数字列表。

它应生成此随机数列表的匹配号(匹配号是重复的数字) 例如4 – 6 – 9 – 32 – 34 – 31 – 5 – 32(此处的匹配数为8,因为在8个数字之后,我们有一个中继器)。我希望所有的匹配数字彼此之间相互呼应,之间有一个空格。

有人可以帮我吗?

我尝试创建一个if语句,但是无法正常工作。

for ($rnd=1;$rnd<=50;$rnd++)
{
 $random = mt_rand(0,100) . " ";
 echo $random;
}

2 个答案:

答案 0 :(得分:2)

即将推出解释。

$numbers = array();

for($i = 1; $i <= 50; $i++) {

    $number = mt_rand(0,100);
    if(!isset($numbers[$number])) $numbers[$number] = array();
    $numbers[$number][] = $i;

}

foreach($numbers as $key => $value) {

    $start = '';

    foreach($value as $k => $v) {

        echo $start . $key . ' (Match Number: ' . $v . ')';
        $start = ' - '; 

    }

    echo '<br />';

}

答案 1 :(得分:1)

如果我没有误解您的问题,那么这就是您想要的。让我们这样做吧-

<?php
$existing = [];
$repeat_numbers = [];
for ($rnd=1;$rnd<=50;$rnd++)
{
  $random = mt_rand(0,100);
  if(in_array($random,$existing)){
    $repeat_numbers[] = $rnd; // pushing the repeating index  
  }
  $existing[] = $random;
  echo $random.PHP_EOL;
}

echo implode('-',$repeat_numbers);
?>   

工作演示: https://3v4l.org/eEhB8

按评论

<?php
$existing = [];
$repeat_numbers = [];

for ($rnd=1;$rnd<=50;$rnd++)
{
  $randoms[] = mt_rand(0,100);
}
echo implode('-',$randoms).PHP_EOL;

$i = 1;
foreach($randoms as $rnd){
   if(in_array($rnd,$existing)){
       $repeat_numbers[] = $i;
       $i=1;
   }
   $existing[] = $rnd;
   $i++;
}
echo implode('-',$repeat_numbers);
?>

工作演示 https://3v4l.org/Xjc5X

根据最新评论

<?php
$existing = [];
$repeat_numbers = [];

$randoms = explode('-','3-31-34-29-28-5-28-23-31-4-1-31-11-17-23-9-20-24-22-3-11-24-26-4-10');

$i = 1;
foreach($randoms as $rnd){
   if(in_array($rnd,$existing)){
       $repeat_numbers[] = $i;
       $i=1;
       $existing = []; // This like will do the magic for you
   }
   $existing[] = $rnd;
   $i++;
}
echo implode('-',$repeat_numbers);
?>

工作演示: https://3v4l.org/hIT22

最终编辑:

<?php
$existing = [];
$repeat_numbers = [];
$randoms = explode('-','4-9-13-18-19-34-23-9-9-13-44-5-13-13-88-26-29-27-34-67-65-83-26');

$i = 1;
foreach($randoms as $rnd){
   if(in_array($rnd,$existing)){
       $repeat_numbers[] = $i;
       $i=1;
       $existing = [];
   }else{
       $existing[] = $rnd;
       $i++;    
   }

}
echo implode('-',$repeat_numbers);

?>

工作演示: https://3v4l.org/9j7iq

再次编辑:

<?php
$existing = [];
$repeat_numbers = [];
$randoms = explode('-','4-9-13-18-19-34-23-9-9-13-44-5-13-13-88-26-29-27-34-67-65-83-26');
//print_r($randoms);
$i = 0;
foreach($randoms as $rnd){
   $i++; 
   if(in_array($rnd,$existing)){
       $repeat_numbers[] = $i;
       if(count($existing)==1){
         $i=1;
       }else{
         $i=0;     
       }
       $existing = [];
   }
   $existing[] = $rnd; 
   //print_r($existing);
}
echo implode('-',$repeat_numbers);
?>

工作演示: https://3v4l.org/VfIJY