php强类型性能,PHP强类型参数

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了解更多】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值