如何从海量PHP数组中高效提取随机的小数组片段?
- 内容介绍
- 文章标签
- 相关推荐
本文共计289个文字,预计阅读时间需要2分钟。
有一个趣味功能,用户可以点击刷新,来获取一组新鲜推荐的内容。首先通过数据库查询,获取前1000条数据,然后随机选择4条。程序编写完毕后,发现运行速度很慢,每次刷新都要等待。
有个猜用户喜欢的功能,用户可以通过点击换一组,来刷新推荐的内容。
先通过数据库查询,得到前1000条数据,然后随机去除4条。
程序写完之后,发现运行的很慢,每次刷新,都要等很久才出来。
代码如下:
$arr=range(1,100000); $start=time(); for($i=0;$i<100;$i++){ $key=mt_rand(0,99999-$i); $result[]=$arr[$key]; unset($arr[$key]); sort($arr); } $end=time(); echo$end-$start;
上面的写法,用unset之后,必须进行排序。
unset只会删除键值,而key会保留。
经过改进之后的写法如下:
$arr=range(1,100000); $start=time(); for($i=0;$i<100;$i++){ $key=mt_rand(0,99999-$i); $result[]=array_splice($arr,$key,1); } $end=time(); echo$end-$start;
效率提高了3-4倍。
本文共计289个文字,预计阅读时间需要2分钟。
有一个趣味功能,用户可以点击刷新,来获取一组新鲜推荐的内容。首先通过数据库查询,获取前1000条数据,然后随机选择4条。程序编写完毕后,发现运行速度很慢,每次刷新都要等待。
有个猜用户喜欢的功能,用户可以通过点击换一组,来刷新推荐的内容。
先通过数据库查询,得到前1000条数据,然后随机去除4条。
程序写完之后,发现运行的很慢,每次刷新,都要等很久才出来。
代码如下:
$arr=range(1,100000); $start=time(); for($i=0;$i<100;$i++){ $key=mt_rand(0,99999-$i); $result[]=$arr[$key]; unset($arr[$key]); sort($arr); } $end=time(); echo$end-$start;
上面的写法,用unset之后,必须进行排序。
unset只会删除键值,而key会保留。
经过改进之后的写法如下:
$arr=range(1,100000); $start=time(); for($i=0;$i<100;$i++){ $key=mt_rand(0,99999-$i); $result[]=array_splice($arr,$key,1); } $end=time(); echo$end-$start;
效率提高了3-4倍。

