检查数组中键值的所有组合



我有这个数据集可以使用:

Array
(
    [John Doe] => Array
        (
            [137] => 7
            [22] => 8
            [145] => 7
        )
    [George] => Array
        (
            [143] => 2
            [18] => 7
        )
    [Alisa Baumbach] => Array
        (
            [148] => 7
            [145] => 5
        )
)

现在我想看看用户数组之间是否至少有一个匹配项。我会通过使用array_intersect_key来做到这一点:

$matches = array_intersect_key($user_cor['John Doe'], $user_cor['Alisa Baumbach']);

这当然有效,但这些值是硬编码的,我想自动化它以通过它运行所有组合。我将如何检查是否:

    用户
  • 1 数据与用户 2 相交
  • 用户
  • 2 数据与用户 3 相交
  • 用户
  • 1 数据与用户 3 相交

当然,这已经缩小到 3 个比较而不是 6 个比较,因为我删除了双打,因为我只想要独特的组合。我将如何做到这一点?

我知道这似乎相当典型,但我在措辞上有很多困难,更不用说寻找如何做到这一点的答案了。

您的时间将不胜感激,以帮助我理解这个问题。

类似以下内容?

$keys = array_keys($user_cor);
for ($i = 0;$i < count($keys);$i++) {
    for ($j = $i+1;$j < count($keys);$j++) {
        $matches[$i.",".$j] = array_intersect_key($user_cor[$keys[$i]], $user_cor[$keys[$j]])
    }
}

相关内容

  • 没有找到相关文章

最新更新