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

  • Auteur de la discussion Auteur de la discussion KOogar
  • Date de début Date de début
WRInaute accro
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)
)
 
WRInaute accro
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
 
Nouveau WRInaute
Code:
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.
 
WRInaute accro
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:
 function melange($array) {
  $val = array();
  $keys = array_keys($array);
  shuffle($keys);
     foreach($keys as $key) $val[] = $array[$key];
       return $val;
     }
 
WRInaute discret
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);
}
 
WRInaute accro
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?
 
Discussions similaires
Haut