我试图建立一个函数,它将检查针是干草堆,如果是那么函数应循环,直到没有。循环功能,直到没有指定的针在干草堆中
到目前为止,我已经构建了一个随机数生成函数。那个函数做的是创建一个随机字符串,然后用sha512对其进行哈希处理。该函数然后从字符串中提取所有数字并将其乘以2.
它使我留下一长串数字,然后我将使用mt_rand指定strpos的开始和结束点。之后,我只是返回随机创建的数字。
function randomNumber($suurus, $max){
mb_internal_encoding("UTF-8");
$possible="aábcdeéfghiíjklmnoóöópqrstuúüűvwxyzAÁBCDEÉFGHIÍJKLMNOÓÖŐPQRSTUÚVWXYZ";
$char = mb_substr($possible,rand(0, mb_strlen($possible) - 1),1);
$str = openssl_digest($char, 'sha512');
$str = preg_replace('/[^1-9.]+/', '', $str);
$str = $str*2;
$strLen = strlen($str)-5;
$strStart = mt_rand(1, $strLen);
$strEnd = mt_rand(1, $suurus);
$str = substr($str, $strStart, $strEnd);
while($str > $max){
$str = $str/2;
}
return round($str);
事情是,这个数字不能重复,我需要它在任何时候都是唯一的,我的应用程序。
我实际上完成了我想要的if else语句,但这意味着我必须编写一个重复if语句的长文字,直到我得到我想要的结果。我真的不认为这是做事的最聪明的方式。
if(!isset($voitjad)){
$voitjad[$vCounter][] = array(
'nimi' => $voitja,
'auhind' => $keyCode['v'.$vCount.''],
'rn' => $rN,
'siin' => 1,
'id' => $voitjaID
);
}else{
if(!exist($rN, $voitjad)){
$voitjad[$vCounter][] = array(
'nimi' => $voitja,
'auhind' => $keyCode['v'.$vCount.''],
'rn' => $rN,
'siin' => 1,
'id' => $voitjaID
);
}else{
$rN = randomNumber($atLength, $atCount);
$voitja = $attendcheckfb['attending'][$rN]['name'];
$voitjaID = $attendcheckfb['attending'][$rN]['id'];
if(!exist($rN, $voitjad)){
$voitjad[$vCounter][] = array(
'nimi' => $voitja,
'auhind' => $keyCode['v'.$vCount.''],
'rn' => $rN,
'siin' => 2,
'id' => $voitjaID
);
}else{ and so on....
我也试图与do-while循环,但我不能真正得到它的工作,我不知道究竟我在做什么错在这里。如果你能教育我,请给我提供信息。
$nimed = array_values($nimed);
$voitja = $nimed[$rN]['name'];
$voitjaID = $nimed[$rN]['id'];
$voitjad[$vCounter][] = array(
'nimi' => $voitja,
'auhind' => $keyCode['v'.$vCount.''],
'rn' => $rN,
'siin' => 1,
'id' => $voitjaID
);
$oitjaCount++;
$rN = randomNumber($nimedLength, $nimedCount);
} while(!exist($rN, $voitjad));
如果有,我得到更好的随机生成的数字的方式,那么请告诉我,我很开放的建议。同时我需要这个针,干草堆的帮助。
使用递归函数。 – Chris
好吧,我会谷歌它是什么时候。 – drpzxc
@drpzxc一个调用自身的函数。所以,如果你没有得到想要的结果,只需重新调用函数即可。 – Daniel