当前位置:编程学习 > php >>

php 字符串转换数字问题 紧急

$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。

上一个:PHP 如何通过链接销毁session
下一个:如何安装SQL2005 IIS php

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,