Tri d'un tableau personnalisé

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tri d'un tableau personnalisé

Re: Tri d'un tableau personnalisé

par sirakawa » 29 mai 2013, 09:49

Jette un coup d'oeil sur ksort. Il me semble que ça ferait l'affaire.

Re: Tri d'un tableau personnalisé

par ghost5922 » 28 mai 2013, 16:34

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é

par jonjojo007 » 28 mai 2013, 16:28

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é

par moogli » 28 mai 2013, 15:05

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];
}
?>
@+

Tri d'un tableau personnalisé

par jonjojo007 » 28 mai 2013, 11:20

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 !