strtotime("0000-00-00 00:00:00") 的大“坑”

一、问题描述

    想要的效果是当值为“0000-00-00 00:00:00”时,返回1;

     图一,在本地运行返回1,在服务器运行返回2

    图一

二、问题分析

1、一直以来的思维是strtotime("0000-00-00 00:00:00")的值为0,这样图一返回1

2、图二,在线php工具中运行,strtotime("0000-00-00 00:00:00")的返回值竟然为负值时间戳,!strtotime("0000-00-00 00:00:00")值变为false,结果返回2

3、最后发现,strtotime("0000-00-00 00:00:00")在32bit和64bit的php环境中返回值是不同的,分别返回0和负值时间戳,

恰好本地的环境是32bit,服务器是64bit,导致结果不同;

参考链接:https://www.mokeyjay.com/archives/735

4、解决方法

三、总结延伸

1、本地php环境位数查看,在入口文件index.php中使用phpinfo()即可查看;

2、服务器 找到php执行文件php.exe的路径为/usr/local/php.5.3.8/bin,直接运行file php即可,值为“x86-64”即代表64bit的php环境

3、php在线工具中

同样输入phpinfo()运行即可。

猜你喜欢

转载自blog.csdn.net/u010865136/article/details/81085361
00