循环通过一个大阵列

Moh*_*aal 2 php arrays search loops

我正在创建将创建一个非常大的数组的应用程序,并将搜索它们.我只是想知道是否有一个很好的PHP数组搜索算法来完成这项任务?

示例:我有一个包含超过2M键和值的数组,搜索的最佳方法是什么?

编辑 我创建了一个基于数组的flatfile dbms,所以我想找到最好的搜索方式

Eli*_*gem 5

有几件事:

  1. 尝试一下,对几种方法进行基准测试,看看哪一种更快
  2. 考虑使用对象
  3. 至少考虑一下DB ......它可能是一个NoSQL key->值存储的东西,比如Redis.io(它死得很快)
  4. 搜索算法,确定它们周围有很多

但是在内存中存储2M密钥的关联数组将意味着你将有大量的哈希冲突,这无论如何都会减慢你的速度.对数组进行排序,对其进行排序,并应用一个不错的搜索算法,你可能会让它运行得相当快,但是说实话,我会说你将做出错误的决定.

还要考虑这一点:PHP在设计上是无状态的,每次脚本运行时,数据都必须再次加载到内存中(对于每个请求,如果它是您正在编写的Web应用程序).与HashTable上的暴力搜索相比,不会是一个更大的瓶颈.
找到这个的最快方法是运行测试,一旦关闭APC(或备选方案),然后再次,但缓存您想要首先搜索的阵列.测量两者之间的差异,您将了解阵列的实际构造对您造成的损失