【问题标题】:Check for all combinations of key values in array?检查数组中键值的所有组合?
【发布时间】:2016-03-07 17:02:03
【问题描述】:

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

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 个,因为我删除了双打,因为我只想要独特的组合。我该怎么做呢?

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

如果您能帮我理解这个问题,我们将不胜感激。

【问题讨论】:

  • 这是一个简单的foreach($myArray as $user => $userArrays) X 2
  • 没错,但我显然想输入更多数据。

标签: php arrays multidimensional-array intersect


【解决方案1】:

类似以下内容?

$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]])
    }
}

【讨论】:

    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多