Heim >Backend-Entwicklung >PHP-Tutorial >php快速得到大数组里的随机小数组

php快速得到大数组里的随机小数组

WBOY
WBOYOriginal
2016-07-25 08:43:121014Durchsuche

有个猜用户喜欢的功能,用户可以通过点击换一组,来刷新推荐的内容。

先通过数据库查询,得到前1000条数据,然后随机去除4条。

程序写完之后,发现运行的很慢,每次刷新,都要等很久才出来。

代码如下:

  1. $arr = range(1, 100000);
  2. $start = time();
  3. for($i = 0; $i $key = mt_rand(0, 99999 - $i);
  4. $result[] = $arr[$key];
  5. unset($arr[$key]);
  6. sort($arr);
  7. }
  8. $end = time();
  9. echo $end - $start;
复制代码

上面的写法,用unset之后,必须进行排序。

unset只会删除键值,而key会保留。

经过改进之后的写法如下:

  1. $arr = range(1, 100000);
  2. $start = time();
  3. for($i = 0; $i $key = mt_rand(0, 99999 - $i);
  4. $result[] = array_splice($arr, $key, 1);
  5. }
  6. $end = time();
  7. echo $end - $start;
复制代码

效率提高了3-4倍。

组里, php


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn