我有一个包含许多不同数字的字符串。我正在尝试创建一个新的随机数并将其添加到字符串中。
我需要帮助的部分是“如果数字已经存在于字符串中,则创建一个新的随机数,并继续这样做,直到创建一个在字符串中尚不存在的数字”。
// $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循环?如何更改此功能才能正常工作?
非常感谢您的帮助。
答案 0 :(得分:2)
像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);
答案 1 :(得分:0)
检查字符串中的数据不是最佳解决方案。多数民众赞成因为如果你的随机数将是'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);
更新 - 请注意 - 如果所有可能的变量都已经在字符串中,那么它将是无限循环。