今天闲来无事,分析一下Bo-blog的代码。
其中碰到了两个函数,一个是microtime(),用于计算代码执行花了多少时间。另一个是list(),用于分配一组数据到一个数组中。
microtime()的返回格式为“msec sec”的字符串,其中 sec 是当前的 Unix 时间戳,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。 如:0.87605300 1246631746,前面红色字串是微秒部分,后面蓝色字串是秒的部分(Unix Timestamp)。顺便提一下,如果你用time()函数的话,仅返回蓝色的秒的部分。我们可以设计一个函数getMicroTime(),返回值是return sec + msec,如上面的例子,返回1246631746.87605300。
再提一下计算代码执行花费时间的原理是:先在代码头部加上$time_start=getMicroTime();再在代码尾部加上$time_end=getMicroTime();两个变量一减,就是用了多少秒,比如1.301秒,乘以1000,就是1301ms(毫秒)。如果是1301毫秒的话,你的服务器的性能已经算是差的了(我的有时更差)。
再来谈list()这个函数,这个函数我老是记不住。Google了一下,其实list()这个函数是类似array()的用于赋值的语法结构。
$fruit=array('apple', 'pear', 'banana'');
而list()是这样用的:
list($fruit_a, $fruit_b, $fruit_c, $fruit_d) = array('apple', 'pear', 'banana', 'orange');
注意:该函数只用于数字索引的数组,且假定数字索引从 0 开始。
当然,更复杂的可以这样用(下面这个例子,你先要确认explode()函数只返回2个变量才行!如果多了,只取前面两个数组成员):
list($usec, $sec) = explode(" ",microtime());
有了这个,回头我们看一下上面的getMicroTime()函数如何写(注:经试验,$msec变量无法使用,故改为$usec):
function getMicroTime()
{
list($usec,$sec) = explode(" ", microtime());
return (float)$sec + (float)$usec;
}
