Arrays association aléatoire et non identique [Résolu]

Messages postés
3
Date d'inscription
lundi 18 octobre 2004
Dernière intervention
2 novembre 2011
- - Dernière réponse : ricozone3d
Messages postés
3
Date d'inscription
lundi 18 octobre 2004
Dernière intervention
2 novembre 2011
- 2 nov. 2011 à 09:16
Bonjour,
je cherche à faire associer 2 arrays (contenant chacun les mêmes valeurs mais ordonnées de façon différente) afin de créer des paires uniques.....voici mon début de code (si je ne suis pas vraiment clair !) :

<?php
$amis1 = Array("bertrand", "ronan", "isabelle");// je commence par 3 personnes seulement pour faire simple
$amis2 = $amis1;	// copie du précédent array
shuffle ($amis2);	// on mélange ce nouvel array

// boucle inversée (du dernier au premier élément)
for ($i=count($amis1)-1; $i>=0; $i--){
$a = $amis1[$i];
$b = $amis2[$i];
if ($b!=$a) {
echo '
';
echo $a.' --> '.$b.'
';// le couple est bien formé de façon unique
echo '
';
}else{//end if
echo '
';
echo $a.' --> '.$b.'
';// les valeurs de ces 2 tableaux sont les mêmes
echo '
';
}
 
}
?>


J'ai donc, de façon aléatoire, des combinaisons qui se font bien :
isabelle --> bertrand
ronan --> isabelle
bertrand --> ronan

et parfois des combinaisons que je ne souhaite pas :
isabelle --> ronan
ronan --> isabelle
bertrand --> bertrand

Comment puis-je orienter mon code afin d'avoir toujours une combinaison dont les valeurs ne sont jamais identiques et ordonnée de façon aléatoire ?

Merci de vos conseils
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Dernière intervention
23 mars 2012
1
3
Merci
Il te faut utiliser une fonction récursive.

Genre :
<?php
function putter($mixed) 
{
$new_mixed = $mixed;
shuffle($new_mixed);
foreach($mixed AS $k => $v)
if($mixed[$k]==$new_mixed[$k])
return putter($mixed); 
return $new_mixed;
}

$array = putter(array('bertrand', 'ronan', 'isabelle'));
?>



______________________________________________________________________

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de phpAnonyme
Messages postés
3
Date d'inscription
lundi 18 octobre 2004
Dernière intervention
2 novembre 2011
0
Merci
Merci, effectivement c'est assez simple avec une fonction récursive qui cherche de façon aléatoire un autre nom à chaque fois qu'elle rencontre un nom identique.
Je ne suis pas encore à l'aise avec ce genre de mécanismes.

Merci du tuyau !
Commenter la réponse de ricozone3d

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.