• php date()函数不支持处理大于2147483648的数字?


    PHP代码:

    <?php
    
    echo 2147483648 + 100;
    
    echo '<br>';
    
    echo date('Y-m-d', 2147483648);
    
    ?>


    运行后显示结果,可以看出第一样运算正确支持处理2147483648 + 100,但第二行就显示1901年了:




    首先php是64位的,windows也是2012 64位, apache也是64位的:


    为什么会出现这么严重的问题啊, floatval()肯定不行, 因为用它处理后还有小数点也被存入数据库了, 然后还会出现严重的判断逻辑灾难啊,


    比如 if(floatval($_GET[id]) === 123) 就算id=123它也认为不成立返回假, 为什么程序代码处理整数不能严格按照数学界的标准来, 只要是纯数字的都是整数啊???
    测试出来不是php版本是否升级的问题, 而是TMD所有Windows的php都有该BUG, 即使你的php和windows全是64位也不行,
    很多函数不支持处理大于21亿的数

    开始没注意到是 php 5.6.23
    你可以看一下 php 的发版说明:只有 php 7 才真正解决了 64位数运算的问题(不分 x86、x64)
    所以你应该一步升级 php7 到位,而不是在低版本上纠结历史问题

    PHP7下,没问题,正常输出

    赞赏码

    非学,无以致疑;非问,无以广识

  • 相关阅读:
    阻止表单重复提交的办法以及支付成功后页面后退重复提交的解决方案
    jsp页面的共用
    空间谱专题02:波束形成(Beamforming)
    空间谱专题01:信号模型
    空间谱专题00:综述
    BP神经网络
    fdatool的滤波器设计
    Testbench
    Cordic算法简介
    快速删除注释
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452473.html
Copyright © 2020-2023  润新知