首页  >  问答  >  正文

php带分隔符的随机数,不重复

我有下面的 php 代码,它在添加静态数字 ;100 时创建随机数,并用 | 除数字。它运行良好,但会创建重复的数字,如何使其防止创建重复的数字?

echo shd 为 3;100|2;100,但 ;100 之前没有重复的数字。但此代码有时会输出类似 2;100|2;100 的数字,这些数字是重复的。

<?php
$kat_list=array(1,2,3,4);

$count_cat= rand(2,3);

for ($i = 1; $i <= $count_cat; $i++) {
    $rnd_cat= rand(0,count($kat_list)-1);
    $kats[]=$kat_list[$rnd_cat].'--100';

}
$line=implode('-',$kats);

 $line=str_replace('--', ';', $line);
 $line=str_replace('-', '|', $line);
 


 echo $line;

P粉131455722P粉131455722432 天前563

全部回复(2)我来回复

  • P粉512526720

    P粉5125267202023-09-07 14:36:59

    您可以在数组内爆之前使用 array_unique 删除重复项

    $kat_list=array(1,2,3,4);
    
    $count_cat= rand(2,3);
    
    for ($i = 1; $i <= $count_cat; $i++) {
        $rnd_cat= rand(0,(count($kat_list)-1));
        $kats[]=$kat_list[$rnd_cat].'--100';
    
    }
    
    $kats = array_unique($kats);
    
    $line=implode('-',$kats);
    
    $line=str_replace('--', ';', $line);
    $line=str_replace('-', '|', $line);
     
     echo $line;

    回复
    0
  • P粉807397973

    P粉8073979732023-09-07 11:50:21

    $kat_list=array(1,2,3,4);
    shuffle($kat_list); // shuffle list
    $count=3;
    for($i=0; $i<$count; ++$i) {
        // get the first N items of the shuffled list
        printf("%d ", $kat_list[$i]);
    }
    

    尝试一下:https://3v4l.org/a31pv

    回复
    0
  • 取消回复