我有一个PHP脚本,可以创建一个随机的10位数订单号:
// Assign order number length
$digits = 10;
// Create random order number to be stored with this order
$order_number = rand(pow(10, $digits-1), pow(10, $digits)-1);
如何防止在随机10位数字中包含数字零0
?提前致谢!
答案 0 :(得分:4)
您可以进行精彩的基本转换,但最后,最直接的方法是获取字符串:
function random_string($count, $available) {
$result = '';
$max = strlen($available) - 1;
for($i = 0; $i < $count; $i++) {
$result .= $available[rand(0, $max)];
}
return $result;
}
…
$order_number = random_string($digits, '123456789');
答案 1 :(得分:3)
您可以将其视为基数9
base_convert(rand(0, pow(9, $digits) - 1), 10, 9)
这将为您提供从0到8的数字。
现在只需在每个数字上加1,使其为1到9
(pow(10, $digits) - 1) / 9
会给你一个填充的数字。现在只需将其添加到您之前的号码,然后就可以了:
$digits = 10;
$order_number = (pow(10, $digits) - 1) / 9 + base_convert(rand(0, pow(9, $digits) - 1), 10, 9);
答案 2 :(得分:2)
试试这个:D
function getRandom($from, $to){
$num = rand($from, $to);
$have_zero = true;
$strNum = strval($num);
while ($have_zero){
$have_zero = false;
for ($i = 0; $i < sizeof($strNum); $i++){
if ($strNum[$i] == '0'){
$have_zero = true;
$num = rand($from, $to);
$strNum = strval($num);
break;
}
}
}
return $num;
}
getRandom(1111111111, 9999999999);
答案 3 :(得分:1)
你可以使用这样一个简单的函数:
function getRandom($length) {
$numbers = '';
for($i = 0; $i < $length; $i++) {
$numbers .= rand(1, 9);
}
return $numbers;
}
echo getRandom(10);
答案 4 :(得分:1)
我会做一个功能。
<?php
function myRandomNumberWithoutZeros($digits)
{
$result = str_replace("0", "",rand(pow(10,$digits-1), pow(10, $digits)-1)."");
$resultLength = strlen($result);
if($resultLength < $digits)
{
return intval($result.myRandomNumberWithoutZeros($digits-$resultLength));
}
return intval($result);
}
echo myRandomNumberWithoutZeros(10);
?>