Tri d'un tableau

  • Auteur de la discussion Auteur de la discussion Recif
  • Date de début Date de début
WRInaute impliqué
Bonjour,

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

J'ai le tableau construit ainsi :

Code:
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
 
WRInaute accro
Recif a dit:
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.
 
WRInaute impliqué
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...
 
WRInaute discret
Bonjour
Change un peux ton array pour faire un truc plus facile.

Exemple :
Code:
$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:
$new_ary[$name] = array(
    'path' => $file,
    'name' => $name,
    'copyright' => $items['copyright']
);
 
WRInaute impliqué
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 ... :-(
 
WRInaute discret
Salut

ok, alors ajoute cette fonction dans le fichier des fonctions de phpbb, me rappel plus du nom ^^
Code:
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:
$new = my_Sort($new_ary);
 
WRInaute discret
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
 
WRInaute impliqué
Oh YES!! :-)
C'est parfait, ca fonctionne correctement.
Merci beaucoup pour ton aide et ton temps passé!! ;-)

Stephane
 
Discussions similaires
Haut