Продолжайте генерировать случайные числа, пока их не существует - PHP - PullRequest
0 голосов
/ 22 марта 2012

У меня есть строка с большим количеством разных чисел.Я пытаюсь создать новое случайное число и добавить его в строку.

Часть, с которой мне нужна помощь: «если число уже существует в строке, создайте новое случайное число и продолжайте делать это досоздан номер, который еще не существует в строке ".

// $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?Как бы я изменил это для правильной работы?

Ваша помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Решение, которое работает как 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);
0 голосов
/ 22 марта 2012

Проверка данных в строке не является лучшим решением.Это потому, что если ваше случайное число будет '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);

Обновление - только будьте осторожны - если все возможные переменные уже будут в строке, это будет бесконечный цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...