Page 1 sur 1

Tri d'un tableau personnalisé

Posté : 28 mai 2013, 11:20
par jonjojo007
Bonjour,

J'aimerai trier un tableau d'une mannière complètement subjective sans logique.
J'ai vu qu'il faut utiliser usort avec une fonction de comparaison mais je sais pas comment faire ma fonction de comparaison.

Exemple :
$tab = array(1=>'Toto',2=>'Tata',3=>'Titi',4=>'Tutu');
usort($a, "cmp");
Je voudrais que mon tableau soit trié en fonction des clés de cette mannière : D'abord la clé 3 puis la 2 puis la 4 puis la 1. (ça n'a aucun sens mais c'est normal c'est hors contexte).
Comment faire ma fonction cmp ?
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
Merci !

Re: Tri d'un tableau personnalisé

Posté : 28 mai 2013, 15:05
par moogli
salut,

il faut trouver une logique si tu veux utiliser cette fonction.

- est ce que tu n'a que 4 index ?
- est ce vraiment utile de trier ?

Si tu répond oui à la première question tu peux très bien utiliser directement les index
$tmp[1] = $tab[3];
$tmp[2] = $tab [2];
etc
$tab = $tmp;

si tu ne peux pas trouver une règle de gestion pour ordonner le tableau tu ne pourras pas le faire avec cette fonction.

Tu peux le faire avec deux un deuxième tableau qui contiendra l'ordre des clefs.
par exemple
<?php
$ordre = [3,2,4,1];
$tab = array(1=>'Toto',2=>'Tata',3=>'Titi',4=>'Tutu');
foreach($ordre as $index) {
    $final[] = $tab[$index];
}
?>
@+

Re: Tri d'un tableau personnalisé

Posté : 28 mai 2013, 16:28
par jonjojo007
mmm, c'est bien ce que je pensais, sans logique, faut le faire à la main. Actuellement, je faisais comme avec le tableau d'ordre. J'ai pas que 4 valeurs j'en ai 11 actuellement. C'est en faite une liste de rôles sur des fiches films, aujourd'hui je tri mes roles par ordre alpha, mais j'ai décidé de les trier par ordre d'important. Réalisateurs, Musique, acteurs principaux etc. et donc je tri en fonction de l'id role totalement sans aucune logique :)

Re: Tri d'un tableau personnalisé

Posté : 28 mai 2013, 16:34
par ghost5922
Bonjour,

Si c'est informations sont en base tu peux peut-être ajouter un champ order puis order by ordre

Re: Tri d'un tableau personnalisé

Posté : 29 mai 2013, 09:49
par sirakawa
Jette un coup d'oeil sur ksort. Il me semble que ça ferait l'affaire.