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]);
是否有一行代码可以实现这一目标?
答案 0 :(得分:5)
你可以使用正则表达式在一行中完成整个事情:
$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"
答案 1 :(得分:2)
不幸的是,由于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)
- 所以,它会像:
ini_set('precision', 20);
var_dump(str_replace('.', '', microtime(1)));//string(20) "13856484375004820824"
- 不是&#34;单行&#34;,但您已了解导致此类行为的原因,因此您只能调整precision
一次然后再使用它。