PHP: Mélanger un tableau de tableau de manière aléatoire


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Jeu Juin 11, 2009 6:38

Bonjour,

Comment mélanger un tableau de tableau de manière aléatoire ??

Array (
[0] => Array ( [id] => 10 [identifiant] => A20)
[1] => Array ( [id] => 11 [identifiant] => A21)
[2] => Array ( [id] => 12 [identifiant] => A22)
)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8576
Inscription: 23 Nov 2005

Re: PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Jeu Juin 11, 2009 6:43



KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Jeu Juin 11, 2009 13:53

oui, j'ai essayé avec shuffle mais je n'arrive pas a mélanger les clés, heureusement que je peux trier autrement donc je m'en sors avec un array_multisort($tab, SORT_DESC) mais c'est pas ce qu'il y a de plus pertinent. J'ai bien une idée en tete, mais ca me fait faire une lecture sur les clés avec array_keys() et j'ai pas trop envie de modifier le reste du code qui suis. Une fonction qui fasse tout en un serait l'idéal


neuneu
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 30 Juil 2004

Re: PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Jeu Juin 11, 2009 14:36

Code: Tout sélectionner

function melange(&$array) {
$val = array();
$keys = array_keys($array);
shuffle($keys);
foreach($keys as $key) {
            $val[$key] = $array[$key];
           unset($array[$key]);    }
$array = $val;}



Ca devrait faire l'affaire.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Jeu Juin 11, 2009 22:55

thx, voyons voir..ca devrait fonctionnerr... mais il ne se passe rien...ok j'ai trouvé le probléme, il ne faut pas essayer de réindicé $val et pour éviter le $global un return s'impose....et c'est bouclé :D

Code: Tout sélectionner
function melange($array) {
  $val = array();
  $keys = array_keys($array);
  shuffle($keys);
     foreach($keys as $key) $val[] = $array[$key];
       return $val;
     }


bidulemachin
WRInaute discret
WRInaute discret
 
Messages: 102
Inscription: 5 Oct 2007

Re: PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Ven Juin 12, 2009 13:59

A noter que la fonction shuffle() mélange les clés ! Pour éviter de changer les clés, personnellement j'utilise ça :

//$shuff étant ton array
uasort( $shuff, 'scmp' );

function scmp( $a, $b ) {
return rand(-1,1);
}


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: PHP: Mélanger un tableau de tableau de manière aléatoire

Message le Sam Juin 13, 2009 8:56

de mon coté je travaille uniquement les datas en sortie, donc pour moi ca n'a aucune importance le mélange des clés. Je peux en 3 secondde me faire une copie de la table si besoin

j'aime bien ton algo mais je comprend pas tout, tu pourrais l'expliquer stp?


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités