2012-03-22 2 views
0

У меня есть строка с множеством разных чисел. Я пытаюсь создать новое случайное число и добавить его в строку.Продолжайте генерировать случайное число до тех пор, пока его не существует - 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? Как я могу изменить это для правильной работы?

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

+0

сделать вам это нужно, чтобы быть строкой? Это делает его более сложным, чем нужно. – Yoshi

+0

Я упростил его для публикации здесь, но строка содержит значение строки mysql. – JROB

+0

Является ли «rand (5, 15)» примером или фактическим диапазоном случайных чисел? – Yoshi

ответ

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); 
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); 

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

+0

Я попытался сделать этот пример простым, но строка намного сложнее, чем случайная, и случайное число на самом деле представляет собой случайное восьмисимвольное сочетание букв и цифр, поэтому нет способа, чтобы случайный символ появлялся в строке, если это не было законно там. – JROB

Смежные вопросы