我从两个数组开始。第一个很长,由潜在的ID组成,但ID可以在$potential
阵列中多次显示,这是增加稍后选择该ID的概率的一种方式。按另一个数组中的值过滤数组?
第二个数组是需要与$potential
数组中的某个人配对的人的ID。然而,需要合作伙伴的人将出现在两个阵列中。因此,我需要在分配对之前临时移除包含用户标识的元素,以避免与他人配对。
$potential = array('105', '105', '105', '2105', '1051');
$users = array('105', '1051');
从这个我需要到结束:
$arr1 = Array ([0] => 105 [1] => 105 [2] => 105)
$arr2 = Array ([3] => 2105 [4] => 1051)
,这样我可以从$arr2
指定合作伙伴105
,然后重新组合排列,并在下次迭代能够分配的合作伙伴到1051
:
$arr1 = Array ([4] => 1051)
$arr2 = Array ([0] => 105 [1] => 105 [2] => 105 [3] => 2105)
我一直在瞎搞,但是这是我能够做到的最好的:
function differs ($v) { global $users; return ($v == current($users)) === true; }
foreach ($users as $value) {
$arr1 = array_filter($potential, differs);
$arr2 = array_diff($potential, $arr1);
}
当然,上述不起作用。有任何想法吗?我是否全部错了?谢谢。
你之前和之后的数组对我来说没有意义 - 为什么'$ arr1'中的'105'但'1051'在'$ arr2'中? – Dan 2014-09-12 14:43:37
丹,'105'和'1051'都需要分配一个伙伴,一次一个。对于他们每个人来说,'$ potential'数组中的每个条目都是潜在的合作伙伴,除了他们不能与他们自己合作。这就是为什么我不会同时删除所有'105' *和*'1051'条目的原因。 – David 2014-09-12 14:54:19