Bonjour, y a t-il moyen de trier ce type de tableau par exemple par pseudo ? :
array (
0 => array ("pseudo" => "Oprichnik", "pass" => "bibi")
1 => array("pseudo" => "Dracau", "pass" => "astro")
)
Il faut donc trier les indexs.
Bonjour, y a t-il moyen de trier ce type de tableau par exemple par pseudo ? :
array (
0 => array ("pseudo" => "Oprichnik", "pass" => "bibi")
1 => array("pseudo" => "Dracau", "pass" => "astro")
)
Il faut donc trier les indexs.
tu peux faire ça avec la fonction http://php.net/usort
(j'avais ça sous la main)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php function pseudo_cmp($a, $b) { return strcmp($a['pseudo'], $b['pseudo']); } usort($mon_tableau, 'pseudo_cmp');
Merci ! pour la fonction toute faite aussi ça m'évite de chipoter !![]()
Seulement il y a un problème :
le tableau renvoyer enlève remplace les noms d'index du tableau (associatif) par un index :
array (
0 =>
array (
0 => '33',
1 => 'Bibi',
2 => 'bibi@hotmail.com',
3 => 'France',
4 => 'Paris',
)
la fonction uasort ne regle pas le problème..
Vous utilisez quoi ? Comment ? Sur quoi ?
usort ne modifie pas les tableaux sur les niveaux "supérieurs" (cf votre exemple et le code que j'ai donné).
Voici mon code ($orderBy contient quelque chose comme "pseudo desc" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 list($orderBy_champ,$orderBy_asc_dsc) = explode(" ",$orderBy); function champ_cmp($a, $b) { $sort_nb = strcmp($a[$GLOBALS["orderBy_champ"]], $b[$GLOBALS["orderBy_champ"]]); if(strtolower($GLOBALS["orderBy_asc_dsc"]) == "desc") { $sort_nb = -($sort_nb); } return $sort_nb; } usort($result, 'champ_cmp');
Et en affichant le tableau avant/après qu'obtenez-vous ?
Vous pouvez simplifier votre code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 list($orderBy_champ, $orderBy_asc_dsc) = explode(' ',$orderBy); function asc($a, $b) { return strcmp($a[$GLOBALS['orderBy_champ']], $b[$GLOBALS['orderBy_champ']]); } function desc($a, $b) { return strcmp($b[$GLOBALS['orderBy_champ']], $a[$GLOBALS['orderBy_champ']]); } usort($result, $orderBy_asc_dsc);
ok, je trie sur :
$FILE[0]["id"] = "10";
$FILE[0]["pseudo"] = "Oprichnik";
$FILE[0]["email"] = "mxxxxxxxxxxxxxxx";
$FILE[0]["pays"] = "Belgique";
$FILE[0]["ville"] = "Namur";
$FILE[1]["id"] = "20";
$FILE[1]["pseudo"] = "Dracau";
$FILE[1]["email"] = "dxxxxxx";
$FILE[1]["pays"] = "Belgique";
$FILE[1]["ville"] = "Namur";
$FILE[2]["id"] = "33";
$FILE[2]["pseudo"] = "Bibi";
$FILE[2]["email"] = "bibi@hotmail.com";
$FILE[2]["pays"] = "France";
$FILE[2]["ville"] = "Paris";
et j'obtiens :
array (
0 =>
array (
0 => '33',
1 => 'Bibi',
2 => 'bibi@hotmail.com',
3 => 'France',
4 => 'Paris',
),
1 =>
array (
0 => '20',
1 => 'Dracau',
2 => 'drxxxx',
3 => 'Belgique',
4 => 'Namur',
),
2 =>
array (
0 => '10',
1 => 'Oprichnik',
2 => 'maxxxxxx',
3 => 'Belgique',
4 => 'Namur',
),
)
Oups non désolé une erreur de ma part..
Partager