不断生成随机数,直到不存在一个-PHP


Keep generating random number until one does not exist - PHP

我有一个字符串,里面有很多不同的数字。我正在尝试创建一个新的随机数并将其添加到字符串中。

我需要帮助的部分是"如果这个数字已经存在于字符串中,创建一个新的随机数,并一直这样做,直到创建一个还不存在于字符串的数字"。

// $string contains all the numbers separated by a comma
$random = rand(5, 15);
$existing = strpos($string, $random);
if ($existing !== false) { $random = rand(5, 15); }
$new_string = $string.",".$random;

我知道这不太正确,因为它只会检查它是否存在一次。我需要它不断检查,以确保字符串中不存在随机数。我用while循环吗?我该如何更改才能正常工作?

非常感谢你的帮助。

一个类似Endijs的解决方案。。。但我想发布:)

$string = '6,7,8';
$arr = explode(',', $string);
$loop = true;
while($loop) {
    $randomize = rand(5, 15);
    #var_dump($randomize);
    $loop = in_array($randomize, $arr);
    if (!$loop) {
        $arr[] = $randomize;
    }
}
$newString = implode(',', $arr);
var_dump($newString);

检查字符串中的数据不是最好的解决方案。这是因为若你们的随机数是"5",而在字符串中你们有15,strpos会找到5的准确度。我会把字符串转换成数组并在上面进行搜索

$a = explode(',' $your_string);
$random = rand(5, 15);  
while (in_array($random, $a))
{
    $random = rand(5, 15);      
}
$a[] = $random;
$your_string = implode(',', $a);

更新——只是要小心——如果所有可能的变量都已经在字符串中,那么它将是无休止的循环。