我有几个大数组作为项目,每个数组有5 000 - 10 000个值。
所有都是简单的数组,比如
$array = array(125,345345,345,3485,324,65,746647,3221, ... );
我正在尝试搜索他们的某些数字,并对不同的数字重复此操作将近1 000次。
像
if $array has item 345 {
return true
} else {
return false
}
但请求需要很长时间才能完成。有时服务器会发出超时错误。
在简单的结构中搜索某个数字的最佳方法是什么,但是它们的大小数组很大?
答案 0 :(得分:8)
最简单的方法是翻转阵列(参见array_flip
)并使用isset($array[$key])
。这使用哈希查找而不是搜索,所以它更快。
除此之外,尝试使用数据库或处理大型数据集的更优化方法。
答案 1 :(得分:2)
if (in_array(345, $array)) {
return true;
} else {
return false;
}
没有看到你想要为每个号码做1000次。 使用数据库。
使用这样的数据库:
$result = mysql_query("SELECT * WHERE number={$number}", $link);
$x = (mysql_num_rows($result) > 0 ? mysql_num_rows($result) : false );
答案 2 :(得分:2)
这更像是计算机科学问题,而不是PHP问题。我建议查看“二进制搜索”或“二叉树”。如果你谷歌,你甚至可能找到一个现有的实施。