0
我有一個2d數組。假設每個職位我有一個數字os候選人來填補它。PHP - 二維數組中的所有排列 - 唯一和有序的值
例:
Position 0 -> Candidates: 1,2,3
Position 1 -> Candidates: 3,4,5
Position 2 -> Candidates: 4,5
翻譯:
Array_Position(
array('1', '2', '3'),
array('3', '4','5'),
array('4', '5')
);
我希望所有的組合,用2個限制:
不重複(如果考生已經在一個位置,它不會再出現在另一個位置)。
這不容發生:
1-4-4
3-3-4候選不容比他以前的 「小」。
這不容發生:
1-5-4
3-5-4
在這種特殊情況下,所有可能的組合是:
1-3-4
1-3-5
1-4-5
2-3-4
2-3-5
2-4-5
3-4-5
我看到一些這樣的答案:
<?php
function array_cartesian() {
$_ = func_get_args();
if(count($_) == 0)
return array(array());
$a = array_shift($_);
$c = call_user_func_array(__FUNCTION__, $_);
$r = array();
foreach($a as $v)
foreach($c as $p)
$r[] = array_merge(array($v), $p);
return $r;
}
$cross = array_cartesian(
array('1', '2', '3'),
array('3', '4','5'),
array('4', '5')
);
print_r($cross);
?>
但他們都沒有解決2限制。
任何幫助?
Tks!
它工作完美。非常感謝你! – Erick
很高興聽到它有效@Erick,如果這是正確的答案,請點擊答案左側的複選標記。 :) –