我想为文件名生成一个随机的 5 位数字,但有例外。
如果 PHP 将生成例如数字 65,我想设置为 00065(只有 5 位)。
我有一个包含生成器异常的数组:
$uploaded_files= array(00178, 49856, 32183, 02004, 01585);
在数组中是已经存在的文件名,并且数字生成器省略它们非常重要,以避免可能的错误。
谢谢你。
问问题
1812 次
2 回答
0
试试这个:
//create a rand_value initially
while(in_array($rand_value, $uploaded_files) {
$rand_value = rand(0, 99999);
$rand_value = sprintf("%05s", $rand_value);
}
于 2013-02-11T12:00:31.360 回答
0
考虑不要重新发明轮子,尤其是当轮子以某种方式以您的语言提供时。话虽如此:
/**
* 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()
);
请注意,这种实现在碰撞非常快时可能非常昂贵,尤其是在异常列表增长的情况下。
于 2013-02-11T12:40:23.983 回答