首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php microtime()格式值

php microtime()格式值
EN

Stack Overflow用户
提问于 2013-11-29 14:08:24
回答 2查看 3.5K关注 0票数 4

PHP的microtime()返回如下内容:

代码语言:javascript
复制
0.56876200 1385731177 //that's msec sec

我需要这种格式的值:

代码语言:javascript
复制
1385731177056876200 //this is sec msec without space and dot

目前我正在做一些事情:

代码语言:javascript
复制
$microtime =  microtime();
$microtime_array = explode(" ", $microtime);
$value = $microtime_array[1] . str_replace(".", "", $microtime_array[0]);

是否有一行代码来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-29 14:09:43

您可以使用regex在一行中完成整个任务:

代码语言:javascript
复制
$value = preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime());

示例

代码语言:javascript
复制
<?php
    $microtime = microtime();
    var_dump( $microtime );
    var_dump( preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', $microtime) );
?>

输出

代码语言:javascript
复制
string(21) "0.49323800 1385734417"  
string(19) "1385734417049323800"

DEMO

票数 6
EN

Stack Overflow用户

发布于 2013-11-29 14:22:35

不幸的是,由于PHP对浮点表示的限制(整个数字为14位),使用microtime()true作为参数是没有意义的。

因此,您必须像使用字符串一样使用它(例如,通过preg_replace() ),或者调整precision以使用本机函数调用:

代码语言:javascript
复制
var_dump(1234567.123456789);//float(1234567.1234568)
ini_set('precision', 16);
var_dump(1234567.123456789);//float(1234567.123456789)

-so,它就像:

代码语言:javascript
复制
ini_set('precision', 20);
var_dump(str_replace('.', '', microtime(1)));//string(20) "13856484375004820824" 

-still不是“一行”,但是您知道导致这种行为的原因,所以您只能调整precision一次,然后使用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20287608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档