数组检查是否存在所有值


array check to see if all values exists

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

假设我有一个阵列

$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亿个数组。这种解决方案不会扩大规模。

我认为这个函数可以帮助您:

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';