我從兩個數組開始。第一個很長,由潛在的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