4

ランダムな 10 桁の注文番号を作成する PHP スクリプトがあります。

// 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);

010 桁の乱数に数字のゼロが含まれないようにするにはどうすればよいですか? 前もって感謝します!

4

5 に答える 5

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');
于 2013-09-28T23:48:25.920 に答える
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);
于 2013-09-29T00:04:50.620 に答える
1

次のような単純な関数を使用できます。

function getRandom($length) {
    $numbers = '';
    for($i = 0; $i < $length; $i++) {
        $numbers .= rand(1, 9);
    }
    return $numbers;
}

echo getRandom(10);
于 2013-09-28T23:49:24.403 に答える