我已经做了一些搜索,我发现this不幸的是,这并不是我正在寻找的。 p>
我的问题是,我有一个数组中的用户ID列表,其大小可能从0到30+用户不等。
看起来像是:
manifest: src/main/AndroidManifest.xml
我需要的是能够找到这些用户可能的所有对:
$arr = array(1,2,3);
我们的想法是能够在消息传递平台上创建联系人列表,以便每个人都在其联系人列表中互相拥有。
上面链接的问题的例子给了我重复的元素,我不能有重复的元素,也不需要3个元素,只有2个。
答案 0 :(得分:1)
从我看来,你有两个目标:
You can achieve this有两个循环并跟踪您已处理的内容:
$arr = range(1, 30);
$alreadyProcessed = array();
foreach ($arr as $first) {
// Loop the array twice (as @Dagon mentioned)
foreach ($arr as $second) {
// Keep track of what you've already processed
$combination = array($first, $second);
// Sorting the numbers will ensure that 2 - 1 and 1 - 2 are the same
sort($combination);
// Ensure they aren't the same number and you haven't already processed them
if ($first === $second || in_array($combination, $alreadyProcessed)) {
continue;
}
// Output as per your example
echo "($first - $second)" . PHP_EOL;
// Add it to the list of what you've already processed
$alreadyProcessed[] = $combination;
}
}
注意:这种逻辑很糟糕。您正在执行指数级的重复,因为您在同一个数组的循环内循环一个数组。这个特殊的例子将执行30次重复30次(大量的循环)。这只有30个条目。如果您的用户群增长到10,000,会发生什么?再见服务器。