in_array问题

时间:2011-04-01 16:25:47

标签: php arrays search

我有几个大数组作为项目,每个数组有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
}

但请求需要很长时间才能完成。有时服务器会发出超时错误。

在简单的结构中搜索某个数字的最佳方法是什么,但是它们的大小数组很大?

3 个答案:

答案 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问题。我建议查看“二进制搜索”或“二叉树”。如果你谷歌,你甚至可能找到一个现有的实施。