php 字符串转换数字问题 紧急
$ornumber=date('Ymd',time())."0000000001"; // 这个输出的话是201010250000000001
$ornumber=$ornumber+1; // 而这个输出的话 怎么是 2147483647 呢??
$ornumber=date('Ymd',time())."0000000001"; // 这个输出的话是201010250000000001
$ornumber=$ornumber+1; // 而这个输出的话 怎么是 2147483647 呢??
答案:溢出了。你可以尝试把日期和编号分开<?php
$ornumber=date('Ymd',time())."0000000001"; //使用了字符串连接,此时变量内为字符串类型。输出正常。
echo (string)$ornumber."<br/>";
$ornumber=(int)$ornumber+1; //32位系统范围:-2147483648~2147483647,如果超出范围发生整数溢出;输出2147483647
echo (string)$ornumber."<br/>";;
?>下面提供一个解决方法
<?php
$serial=1; //初始编号
$Thedate=date('Ymd',time()); //获取时间
$serial++; //编号加一
$ornumber=$Thedate.str_pad($serial,9, "0",STR_PAD_LEFT); //不足9位补0,连接时间字符串
echo $ornumber;
?>"201010250000000001"+1,显然是溢出了。
输出php整型最大值是2147483647。