2012-07-17 43 views
0

我从分配字符串$ randomID的函数中随机选取一个数字。然后,我建立一个字符串$checkIDas = '|'.$randomID.'|';然后,如果之前使用过随机数然后忘记它,然后再试一次。问题是我没有得到错误,页面挂起。我知道我的随机数函数有效,我的查询工作。但是,当我添加if strpos语句时,那是挂起的时候。有什么建议么?php随机数在字符串中查找

function randomNumber($min, $max) { 
    $rand = base_convert(md5(microtime()), 16, 10); 
    $rand = substr($rand, 10, 6); 
    $diff = $max - $min + 1; 
    return ($rand % $diff) + $min; 
} 

$sp = 1; 
$usedUsers = "|0|"; 
while($sp < 7) { 
    $randomID = randomNumber(1,55); 
    $checkIDas = "|".$randomID."|"; 
    if (strpos($usedUsers,$checkIDas) !== false) { 
     //Run my Query 
     $sp ++; 
     $usedUsers = $usedUsers . $randomID."|"; 
    } 
} 
+1

你在哪里设置'$ randomID'? – 2012-07-17 09:25:32

+0

'$ randomID'未定义。使用'ini_set('display_errors',true)'来显示错误。 – 2012-07-17 09:26:37

回答

1

的问题已经被指出的人,我想补充一点,你可以让你的生活更轻松,通过使用适当的语言结构,就像把使用的ID在一个阵列,并看看他们有:

... 
$usedUsers = Array(); // this will hold the id list 
... 

... 
$sp = 1; 
while($sp < 7) { 
    // get $randomID from somewhere 
    if(! in_array($randomID, $usedUsers)) { 
     // Run my Query 
     $sp++;      // increment counter 
     $usedUsers[] = $randomID; // add new id to array 
    } 
} 
... 

(伪代码,根据您的要求进行修改。)

问候

RBO

+0

谢谢。我只在我的第三周的PHP,所以有些事情对我来说并不明显。我知道我想要一个理想的数组,但不知道如何去做。 – 2012-07-17 10:14:24

1

你是不是在if声明再生$randomID,所以在本质上,它是一遍又一遍比较相同的ID,导致一个无限循环。

试试这个:

<?php 
$sp = 1; 
$usedUsers = "|0|"; 
while($sp < 7) { 
     // generate randomID again 
     $randomID = randomGeneratorFunction(); 
    $checkIDas = "|".$randomID."|"; 
    if (strpos($usedUsers,$checkIDas) !== false) { 
     //Run my Query 
     $sp ++; 
     $usedUsers = $usedUsers . $randomID."|"; 
    } 
} 
?> 
+0

对不起,我是。忘了把它放在这里。 – 2012-07-17 09:35:58

1

while循环依赖于SP,因此该循环继续下去。

+0

如果在循环能够前进之前尚未使用该号码,则不需要。 – 2012-07-17 09:55:43

+0

真的有人投票吗? – 2012-07-17 19:38:16