Если вы очистите то, что вы на самом деле хотите достичь, это может быть немного больше поможет, но, чтобы продолжить, вот один из способов получить все совпадения для члена одной группы, без соответствия никому из своей собственной группы - я предполагаю, что вы планируете иметь несколько идентификаторов, а не просто 1234, 5678, 9 10 11 12 в вашем рабочем наборе:
// Build an example array:
$numberSet = array(range(1,4),
range(5,8),
range(9,12));
// The function will return an array of matches when passed the array and the ID:
function findCombos($id, $set)
{
// Store the matches found:
$matches = array();
// Loop through each array in the multidimensional array which was passed:
foreach ($set as $group)
{
// Make sure the ID passed isn't a member of the current array, don't want its matches:
if (!in_array($id, $group))
{
// Loop through each array as the ID isn't a member of this group:
foreach ($group as $member)
{
// Add the match the the matches array:
$matches[] = $member;
}
}
}
// Pass the matches back:
return $matches;
}
Наконец ищет одного пользователей матчей:
// Find all the matches for ID 2 from the multidimensional array:
$matches = findCombos("2", $numberSet);
// Display the nubmer of matches:
echo "Found ".count($matches)." matches for 2.<br/>";
// Loop through each match found:
foreach ($matches as $match)
{
// Display the results:
echo "2 - ".$match."<br/>";
}
Результаты:
Found 8 matches for 2.
2 - 5
2 - 6
2 - 7
2 - 8
2 - 9
2 - 10
2 - 11
2 - 12
Если вы хотите, чтобы показать все возможности вы могли бы сделать что-то вроде этого:
$count = 0;
foreach ($numberSet as $group)
{
foreach ($group as $member)
{
$matches = findCombos($member, $numberSet);
$count = $count+count($matches);
foreach ($matches as $match)
{
echo $member." - ".$match.", ";
}
}
}
echo "<br/>Found ".$count." possible combinations.";
Результаты:
1 - 5, 1 - 6, 1 - 7, 1 - 8, 1 - 9, 1 - 10, 1 - 11, 1 - 12, 2 - 5, 2 - 6, 2 - 7, 2 - 8, 2 - 9, 2 - 10, 2 - 11, 2 - 12 , 3 - 5, 3 - 6, 3 - 7, 3 - 8, 3 - 9, 3 - 10, 3 - 11, 3 - 12, 4 - 5, 4 - 6, 4 - 7, 4 - 8 , 4 - 9, 4 - 10, 4 - 11, 4 - 12, 5 - 1, 5 - 2, 5 - 3, 5 - 4, 5 - 9, 5 - 10, 5 - 11, 5 - 12, 6 - 1, 6 - 2, 6 - 3, 6 - 4, 6 - 9, 6 - 10, 6 - 11, 6 - 12, 7 - 1, 7 - 2, 7 - 3, 7 - 4, 7 - 9, 7 - 10, 7 - 11, 7 - 12, 8 - 1, 8 - 2, 8 - 3, 8 - 4, 8 - 9, 8 - 10, 8 - 11, 8 - 12, 9 - 1, 9 - 2, 9 - 3, 9 - 4, 9 - 5, 9 - 6, 9 - 7, 9 - 8, 10 - 1, 10 - 2, 10 - 3, 10 - 4, 10 - 5, 10 - 6, 10 - 7, 10 - 8, 11 - 1, 11 - 2, 11 - 3, 11 - 4, 11 - 5, 11 - 6, 11 - 7, 11 - 8, 12 - 1, 12 - 2 , 12 - 3, 12 - 4, 12 - 5, 12 - 6, 12 - 7, 12 - 8,
Найдено 96 возможных комбинаций.
Если вы chenage $ numberSet в:
$numberSet = array(array("a","b"),
array("c", "d", "e", "f"),
array("joe", "tom", "same")
);
Результат:
а - с, а - д, а - е, а - е, а - Джо, - том, a - то же, b - c, b - d, b - e, b - f, b - joe, b - tom, b - то же, c - a, c - b, c - joe, c - том, c - тот же, d - a, d - b, d - joe, d - tom, d - , e - a, e - b, e - joe, e - tom, e - то же, f - a, f - b, f - joe, f - том, f - то же, joe - a, joe - b, joe - c, joe - d, joe - e, joe - f , tom - a, tom - b, tom - c, tom - d, tom - e, tom - f, same - a, same - b, same - c, same - d, same - e, same - f,
Итак, вы хотите в итоге отобразить список всех возможных комбинаций? Или вы ищете массив комбинаций? Или вы хотите функцию, передать ей идентификатор и вернуть все возможные комбинации для этого идентификатора? – Scoobler
Спасибо за ответ! Я бы хотел напечатать, поскольку я отправил бы список в HR спасибо :) – isJustMe