Проверить все комбинации значений ключей в массиве?

У меня есть этот набор данных для работы с:

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, так как я убрал двойные, потому что я хочу только уникальные комбинации. Как бы я поступил так?

Я знаю, что это кажется довольно типичным, и все, но у меня много трудностей с формулировкой этого, не говоря уже о поиске ответов о том, как это сделать.

Ваше время было бы очень полезно, чтобы помочь мне понять эту проблему.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]