Optimisation double tri sur un tableau
Posté : 12 janv. 2009, 18:40
Bonjour,
Voilà j'ai un tableau qui attribue 1 aux garçons et 2 aux filles (comme pour le premier chiffre du numéro de la sécurité sociale)
Pour l'instant j'ai fait ça
Vous avez des suggestions ?
Voilà j'ai un tableau qui attribue 1 aux garçons et 2 aux filles (comme pour le premier chiffre du numéro de la sécurité sociale)
$tab['alain'] = 1;
$tab['alex'] = 1;
$tab['anne'] = 2;
$tab['philippe'] = 1;
$tab['catherine'] = 2;
$tab['caroline'] = 2;
$tab['anne marie'] = 2;
$tab['gwendoline'] = 2;
$tab['georges'] = 1;
et je voudrais pouvoir faire un tri sur les index et sur les valeurs pour obtenir par exemple ceciCode : Tout sélectionner
anne 2
anne marie 2
caroline 2
catherine 2
gwendoline 2
alain 1
alex 1
georges 1
philippe 1$tab['alain'] = 1;
$tab['alex'] = 1;
$tab['anne'] = 2;
$tab['philippe'] = 1;
$tab['catherine'] = 2;
$tab['caroline'] = 2;
$tab['anne marie'] = 2;
$tab['gwendoline'] = 2;
$tab['georges'] = 1;
function Tri ($tab,$ordrekey = 'asc',$ordrevalue = 'asc')
{
$temp = array();
$tab_tri = array();
$ordrekey == 'asc' ? ksort($tab) : krsort($tab);
// Crée un tableau multidimentionnel groupé par valeurs
foreach($tab as $key => $value) $temp[$value][$key] = $value;
$ordrevalue == 'asc' ? ksort($temp) : krsort($temp);
foreach($temp as $value) $tab_tri += $value;
return $tab_tri;
}
// Affichage
foreach (Tri($tab,'asc','desc') as $key => $value) echo $key.' '.$value.'<br />';
Cela fonctionne mais bon je me dis qu'il y peut-être plus hi-tech et mieux optimisé ?Vous avez des suggestions ?