1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
<?php
function permutation(&$array,$array2,$limite,$niveau,$aa,&$retour,&$arrCtl,$str="") {
if ($niveau < ($limite-1)) {
for($l=0;$l<count($array);$l++) {
$ll = $array[$l];
if (!in_array($ll,$aa)) {
$aa[$niveau] = $ll;
$niveau2 = $niveau;
$sep = $niveau == 0 ? '' : '|';
permutation($array,$array2,$limite,++$niveau2,$aa,$retour,$arrCtl,$str.$sep.$ll);
}
unset($aa[$niveau]);
}
} else {
for($k=0;$k<count($array);$k++) {
$kk = $array[$k];
if (!in_array($kk,$aa)) {
$aaa = $str.'|'.$kk;
$aaa = preg_replace("/A___\d+/"," ",$aaa);
$elem = explode('|',$aaa);
if (!in_array($aaa,$arrCtl)) {
$arrCtl[] = $aaa;
$retour[] = array_combine($array2,$elem);
}
}
}
}
}
$personnes = array('seb','pierre','jean','michel');
$places = array('UNE','DEUX','TROIS','QUATRE','CINQ');
if (count($personnes) < count($places)) {
//---- plus de places que de personnes
$difference = count($places) - count($personnes);
for ($i=1;$i<=$difference;$i++) {
$personnes[] = "A___$i";
}
}
$aa = array();
$retour = array();
$arrCtl = array();
permutation($personnes,$places,count($places),0,$aa,$retour,$arrCtl);
var_dump($retour); |
Partager