Tri d'un tableau

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Tri d'un tableau

Message le Mar Nov 03, 2009 16:56

Bonjour,

Je n'arrive pas à trier un tableau... :(

J'ai le tableau construit ainsi :

Code: Tout sélectionner
while (($file = readdir($dp)) !== false)
         {
            $subpath = ($mode != 'style') ? "$mode/" : '';
            if ($file[0] != '.' && file_exists("{$phpbb_root_path}styles/$file/$subpath$mode.cfg"))
            {
               if ($cfg = file("{$phpbb_root_path}styles/$file/$subpath$mode.cfg"))
               {
                  $items = parse_cfg_file('', $cfg);
                  $name = (isset($items['name'])) ? trim($items['name']) : false;

                  if ($name && !in_array($name, $installed))
                  {
                     $new_ary[] = array(
                        'path'      => $file,
                        'name'      => $name,
                        'copyright'   => $items['copyright'],
                     );
                  }
               }
            }
         }


Et j'aimerai trier par ordre alphabetique le nom (name) de l'array new_ary... J'ai essayé avec toutes les version de sort en php mais impossible, ca me donne pas de résultat trié ou alors des tris n'importe comment... Quelqu'un aurait il une idée?
Merci


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

Re: Tri d'un tableau

Message le Mar Nov 03, 2009 16:59

La doc PHP a peut-être la solution à ton problème : http://www.php.net/manual/fr/function.array-multisort.php#60401

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Re: Tri d'un tableau

Message le Mar Nov 03, 2009 17:14

J'ai déjà passé toute l'après midi sur ce site...


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

Re: Tri d'un tableau

Message le Mar Nov 03, 2009 17:19

Recif a écrit:J'ai déjà passé toute l'après midi sur ce site...


Et la solution donnée à l'endroit que je te linke ne fonctionne pas ? Parce que j'avais trouvé ça sur un topic de forum ayant trait à la même problématique que toi, et cette fonction semblait répondre parfaitement à la demande.

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Re: Tri d'un tableau

Message le Mar Nov 03, 2009 17:33

Ben c'est surement cette fonction mais je n'arrive pas à la mettre en pratique sur mon problème... :-(
J'ai parcouru pleins de forums avec le même type de problème et utilisant cette fonction mais je n'arrive pas... Il y a un truc ou un parametre qui doit m'échapper...

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Re: Tri d'un tableau

Message le Dim Nov 08, 2009 10:53

up...

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: Tri d'un tableau

Message le Dim Nov 08, 2009 19:43

Bonjour
Change un peux ton array pour faire un truc plus facile.

Exemple :
Code: Tout sélectionner
$new_ary[$name][] = array(
    'path' => $file,
    'name' => $name,
    'copyright' => $items['copyright']
);


Selon si ton $name est unique ou pas, tu aura pas besoin du niveau en plus ([])
Sky


Edit, si j'ai bien pigé ton code, $nom est unique, (du moins tu veux qu'une seul occurence de $nom) :
Code: Tout sélectionner
$new_ary[$name] = array(
    'path' => $file,
    'name' => $name,
    'copyright' => $items['copyright']
);

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Re: Tri d'un tableau

Message le Dim Nov 08, 2009 19:52

Bonjour Sky,

et merci pour ton message.
Le problème c'est que je ne peux pas changer l'array, c'est le code de phpbb v3 ... :-(

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: Tri d'un tableau

Message le Dim Nov 08, 2009 20:43

Salut

ok, alors ajoute cette fonction dans le fichier des fonctions de phpbb, me rappel plus du nom ^^
Code: Tout sélectionner
function my_Sort($arrayToSort)
{
    $out = array();
    $temp = array();

    foreach($arrayToSort as $i => $data_ar)
    {
        $temp[$i] = $data_ar['name'];
    }

    asort($temp);

    foreach($temp as $i => $name)
    {
        $out[] = $arrayToSort[$i];
    }

    return $out;
}


Ensuite, après le while, appel la fonction comme ceci :
Code: Tout sélectionner
$new = my_Sort($new_ary);

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Re: Tri d'un tableau

Message le Dim Nov 08, 2009 21:02

Merci.
Mais ca ne fonctionne pas :-(
On passe au milieu du "W" au "A"

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: Tri d'un tableau

Message le Dim Nov 08, 2009 21:17

Salut
Oui je vient de comprendre pourquoi : c'est à cause des majuscules.

Dans la fonction, change
$temp[$i] = $data_ar['name'];
par
$temp[$i] = strtolower($data_ar['name']);

Sky

Recif
WRInaute impliqué
WRInaute impliqué
 
Messages: 816
Inscription: 25 Aoû 2004

Re: Tri d'un tableau

Message le Lun Nov 09, 2009 8:05

Oh YES!! :-)
C'est parfait, ca fonctionne correctement.
Merci beaucoup pour ton aide et ton temps passé!! ;-)

Stephane


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