Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays PHP-生成一个随机的5位数,数组中有一个例外_Arrays_Exception_Random_Numbers_Generator - Fatal编程技术网

Arrays PHP-生成一个随机的5位数,数组中有一个例外

Arrays PHP-生成一个随机的5位数,数组中有一个例外,arrays,exception,random,numbers,generator,Arrays,Exception,Random,Numbers,Generator,我想为一个文件名生成一个随机的5位数字,但有一个例外 如果PHP将生成例如数字65,则我希望设置为00065(仅5位)。 我有一个数组,其中包含生成器的异常: $uploaded_files=array(0017849856132183020004 01585) 数组中有已经存在的文件名,数字生成器非常重要,可以省略它们,以避免可能的错误。 谢谢。试试这个: //create a rand_value initially while(in_array($rand_value, $uploaded

我想为一个文件名生成一个随机的5位数字,但有一个例外
如果PHP将生成例如数字65,则我希望设置为00065(仅5位)。
我有一个数组,其中包含生成器的异常:
$uploaded_files=array(0017849856132183020004 01585)
数组中有已经存在的文件名,数字生成器非常重要,可以省略它们,以避免可能的错误。
谢谢。

试试这个:

//create a rand_value initially
while(in_array($rand_value, $uploaded_files) {
    $rand_value = rand(0, 99999);
    $rand_value = sprintf("%05s", $rand_value);
}
请考虑不要这样做,尤其是在或中有您的语言版本的控制盘时。也就是说:

/**
 * Get random number outside an exception list
 *
 * @param array $exception Exception list
 */
function getRandom($exception=array('00001', '00002', '00003', '00004', '00005')) {
    $rand=str_pad(mt_rand(0,10),5,0,STR_PAD_LEFT);
    if(in_array($rand,$exception))return getRandom($exception);
    return $rand;
}

var_dump(
    getRandom(),
    getRandom(),
    getRandom(),
    getRandom(),
    getRandom(),
    getRandom()
);

请注意,这种实现在冲突中可能会非常昂贵,特别是在异常列表增长的情况下。

如果PHP in
in_array
将生成一个rand并检查数组中的成员,我该怎么办?请检查代码。你重新发明了轮子,让我笑了,但你是对的。谢谢你的getRandom函数!!