数组检查以查看是否存在所有值

时间:2015-02-12 08:29:47

标签: php performance algorithm cakephp divide-and-conquer

检查数组中的值以查看是否存在所有值的快速且最便宜的方法。

让我们说我有一个数组

$a = array(1,2,3,4,5,6);

我希望将它与数组匹配

 $b = array(6,5,1,3,2,4)
    $c = array(1,9,2,3,4,5)
    $d = array(6,5,4,3,2,1)
    $e = array(1,2,3,4,5,6,7)
    $f = array(2,3,4,1,5,6)
    .....
etc, etc

在上面$ a将匹配$ b和$ f,因为值相同,但不是同一个索引。

现在我知道我可以使用foreach / in_array / array_search等,并遍历每个循环并尝试匹配值。如果阵列大小增加和我们拥有的阵列数量,这可能会非常快速地变得非常昂贵。我可能有100万到200万这些阵列,然后以上述方式循环,这将是一个表演的噩梦。

我的问题是实现这一目标的最佳方式是什么。你们怎么样呢?任何想法都会有所帮助。感谢

修改 正如我在下面的评论中提到的,我不是在寻找一个被认为是重复的问题的答案。我想要O(1)解决方案而不是n ^ 2。那里的解决方案对我没用。我想我需要将这个正确划分或子阵列等等。想象一下1-2百万个阵列,现在想象这些阵列中的3亿个。该解决方案无法扩展。

1 个答案:

答案 0 :(得分:0)

我认为此功能可以帮助您:

array_intersect($array1, $array2); or array_diff($array1, $array2)

and count($array2)

在下一步中,您可以观察它是空的还是元素。

您还可以通过以下方式查看效果:

$start = microtime(true);
// Your script goes here
$end = microtime(true);
$time = number_format(($end - $start), 11);
echo 'This page loaded in ', $time, ' seconds';