检查数组中的值以查看是否存在所有值的快速且最便宜的方法。
让我们说我有一个数组
$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亿个。该解决方案无法扩展。
答案 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';