今天写一个php小项目时,在使用 mt_rand() 函数时,由于传入的值为变量,就遇到了 mt_rand() 函数的报错问题,虽然不是什么大的问题,但也记录一下,给自己提个醒!

mt_rand() 函数错误详情:

Warning: mt_rand(): max(6) is smaller than min(106)

白话文:

mt_rand() 函数报错,最大的数 小于 最小的数

mt_rand() 错误原因:

通过搜索资料,查到下面的一段说明

在PHP 5.3.3版本以前,mt_rand($a, $b) 传入的参数 $a 和 $b 二者没有数字大小比较的限制,但是自 php 的 5.3.4 版本开始,传入的参数必须满足 $a <= $b,即 mt_rand(1, 1) 和 mt_rand(1, 2) 是可以的,但是 mt_rand(2, 1) 就会报错:mt_rand(): max(1) is smaller than min(2)。

解决方案

通过上面的一段话,可以详细的了解到,mt_rand() 第一个参数的的值一定要等于或小于第二个参数的值,这样 mt_rand() 函数才能正常的被使用。

如果我们传入 mt_rand() 函数的参数是一个变量,在传入之前要做好大小的判断!

示例代码:

<?php
$a = 5;
$b = 4;
// 判断要传入变量 $a 与 $b 的大小
if($a <= $b){
    echo mt_rand($a,$b);
}else{
    echo mt_rand($b,$a);
}
?>