PHP的microtime()返回如下内容:
0.56876200 1385731177 //that's msec sec我需要这种格式的值:
1385731177056876200 //this is sec msec without space and dot目前我正在做一些事情:
$microtime = microtime();
$microtime_array = explode(" ", $microtime);
$value = $microtime_array[1] . str_replace(".", "", $microtime_array[0]);是否有一行代码来实现这一点?
发布于 2013-11-29 14:09:43
您可以使用regex在一行中完成整个任务:
$value = preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime());示例
<?php
$microtime = microtime();
var_dump( $microtime );
var_dump( preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', $microtime) );
?>输出
string(21) "0.49323800 1385734417"
string(19) "1385734417049323800"DEMO
发布于 2013-11-29 14:22:35
不幸的是,由于PHP对浮点表示的限制(整个数字为14位),使用microtime()和true作为参数是没有意义的。
因此,您必须像使用字符串一样使用它(例如,通过preg_replace() ),或者调整precision以使用本机函数调用:
var_dump(1234567.123456789);//float(1234567.1234568)
ini_set('precision', 16);
var_dump(1234567.123456789);//float(1234567.123456789)-so,它就像:
ini_set('precision', 20);
var_dump(str_replace('.', '', microtime(1)));//string(20) "13856484375004820824" -still不是“一行”,但是您知道导致这种行为的原因,所以您只能调整precision一次,然后使用它。
https://stackoverflow.com/questions/20287608
复制相似问题