PHP中的time()函数返回当前的Unix时间戳, 这是从 Unix时代的秒数开始测量的时间, 在某些情况下非常有用,但并非总是如此。与大多数其他PHP函数一样,此函数也是跨平台兼容的,因为它适用于Unix,Linux,Windows和Mac。
PHP函数的 microtime()更精确和更精细,因为它以微秒返回当前的Unix时间戳, 我们的问题是它返回一个包含空格和点的字符串,例如,如果您从PHP中生成文件名或HTML或CSS标识符的一部分,那么这个字符串不是很有用。
这就是为什么我们在下面写了这么个小而有用的函数, 它基于PHP函数 microtime (),但是,返回一个干净的数字字符串。
请享用!<?php /**
* Generates and returns a string of digits representing the time of the
* current system in microseconds granularity.
*
* Compared to the standard time() function, the microtime() function is more
* accurate and in addition, successive quick calls inside a loop generate
* unique results; which can be quite useful in certain cases.
*
* Our function below generates digits only output based on the time stamp
* generated by the microtime() function.
*
* @return string
*/functionget_clean_microtimestamp_string() {//Get raw microtime (with spaces and dots and digits)$mt=microtime();//Remove all non-digit (or non-integer) characters$r="";$length=strlen($mt);
for($i=0;$i
if(ctype_digit($mt[$i])) {$r.=$mt[$i];
}
}//Returnreturn$r;
}
注意,microtime()仅在支持gettimeofday()系统调用的操作系统上可用, 我们在 Windows 7. Windows 8 和Ubuntu14上测试了它,它们上都能正常工作。
注意microtime()会产生一个不同的输出值,即使是连续多次调用, 你自己试试吧, 或者,从命令行使用下面的PHP代码,看看我们如何测试函数。<?phpfunctionarray_has_duplicates ($array) {
returncount($array)!==count(array_unique($array));
}$microtimes= array();
for($i=0;$i<1000;$i++) {$microtimes[] =get_clean_microtimestamp_string();
}
foreach($microtimesas$microtime) {
echo$microtime."n";
}
if(array_has_duplicates($microtimes)) {
echo"FOUND DUPLICATES!n";
}
else {
echo"NO DUPLICATES FOUND. AWESOME!n";
}