rand() expects parameter 2 to be integer, float given解决办法
错误提示:
08-29 03:22:53 | 2 | rand() expects parameter 2 to be integer, float given | api\ueditor\Uploader.class.php | 385
385行源代码:$randNum = rand(1, 10000000000) . rand(1, 10000000000);
解决办法 替换为:$randNum = substr(md5(SYS_TIME.$oriName), rand(0, 20), 15); // 随机新名字
原因分析:
从错误提示中我们不难发现rand第二个参数想要一个int类型的参数,而传入的是float类型的.
出错原因:上面参数显然已经超出了int取值的最大范围,PHP本身为弱类型语言,将传入的参数当做了float传入了函数因此才有了这个报错问题.
而此类问题值在PHP7下会出现,应该是和PHP引入强类型参数的原因吧.
知识普及:
php int型的最大值
var_dump(2147483647); // int
var_dump(2147483648); // float
输出如下:
int(2147483647)
float(2147483648)
php int型的最大值
执行以下语句:
var_dump(2147483647); // int
var_dump( 2147483648); // float
可以看到,php int型的最大值就是 2147483647,即2的31次幂 -1,因为32位的最高位要用来表示正负。
再执行以下语句:
$u = sprintf("%u", 2147483648); # 更换为%b,%d试试
$b = sprintf("%b", 2147483648);
$d = sprintf("%d", 2147483648);
var_dump($u);
var_dump($b);
var_dump($d);
//string(10) "2147483648"
//string(32) "10000000000000000000000000000000"
//string(11) "-2147483648"
【phpcms报错:rand() expects parameter 2 to be integer, float given解决办法 https://www.xaheimi.com/jianzhan/378.html了解更多】