Trier un tableau multidimensionnel selon 2 colonnes
Résolu
scouiky
Messages postés
20
Statut
Membre
-
scouiky Messages postés 20 Statut Membre -
scouiky Messages postés 20 Statut Membre -
Bonjour,
Voilà plusieurs heures que je suis bloqué. Je suis en première année de BTS informatique, autant dire que je suis pas un as :P.
Donc voilà, j'ai un tableau de données, qui représente des boites.
Je le remplis avec mes boites issues de ma bdd.
je voudrais ensuite pouvoir trier $tab selon longueur et largeur DESC, comme on aurait fait en SQL
Seulement voilà, je suis bloqué. Mais bloqué bloqué :P
Je vous en prie, sortez-moi de là =D
Voilà plusieurs heures que je suis bloqué. Je suis en première année de BTS informatique, autant dire que je suis pas un as :P.
Donc voilà, j'ai un tableau de données, qui représente des boites.
$tab = array(
array('numBoite' => ...,
'longueur' => ...,
'largeur' => ...
)
);
Je le remplis avec mes boites issues de ma bdd.
je voudrais ensuite pouvoir trier $tab selon longueur et largeur DESC, comme on aurait fait en SQL
SELECT * FROM tab ORDER BY longueur DESC AND largeur DESC
Seulement voilà, je suis bloqué. Mais bloqué bloqué :P
Je vous en prie, sortez-moi de là =D
A voir également:
- Tableau 2 colonnes
- Tableau word - Guide
- Faire 2 colonnes sur word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tableau ascii - Guide
- Formule moyenne excel plusieurs colonnes - Guide
3 réponses
Salut, pour classer un tableau à plusieurs dimensions dans l'ordre DESC, il s'agit de la commande array_multisort($var_tab, SORT_DESC), l'ordre se fera en fonction de la valeur de la première colonne affichée.
Mais puisque tu dis Je le remplis avec mes boites issues de ma bdd. , pourquoi justement, tu ne fais pas ta requête
Mais puisque tu dis Je le remplis avec mes boites issues de ma bdd. , pourquoi justement, tu ne fais pas ta requête
SELECT * FROM tab ORDER BY longueur DESC AND largeur DESC?
Euh ouais... ouais ouais. Mais ouais t'as carrément raison, c'est tout bête, et je sais pas pourquoi je cherche à faire comme ça depuis ce matin.
Bah merci de m'ouvrir les yeux. Purée, je vais me faire un café.
Merci hein, merci mille fois ^^ je vais suppr ce topic maintenant :)
Bah merci de m'ouvrir les yeux. Purée, je vais me faire un café.
Merci hein, merci mille fois ^^ je vais suppr ce topic maintenant :)
Pour ceux qui passent par là, j'ai trouvé un truc bien sympas qui vient de https://www.php.net/ksort ça ma bien aidé pour trier un tableau selon une colonne.
Même si ça ne répond pas vraiment au topic (ça trie sur 1 colonne), je pense qu'il y a moyen de bidouiller le truc. A voir donc, je ne m'y suis pas penché.
Même si ça ne répond pas vraiment au topic (ça trie sur 1 colonne), je pense qu'il y a moyen de bidouiller le truc. A voir donc, je ne m'y suis pas penché.
A nice way to do sorting of a key on a multi-dimensional array without having to know what keys you have in the array first:
<?php
$people = array(
array("name"=>"Bob","age"=>8,"colour"=>"red"),
array("name"=>"Greg","age"=>12,"colour"=>"blue"),
array("name"=>"Andy","age"=>5,"colour"=>"purple"));
var_dump($people);
$sortArray = array();
foreach($people as $person){
foreach($person as $key=>$value){
if(!isset($sortArray[$key])){
$sortArray[$key] = array();
}
$sortArray[$key][] = $value;
}
}
$orderby = "name"; //change this to whatever key you want from the array
array_multisort($sortArray[$orderby],SORT_DESC,$people);
var_dump($people);
?>
Output from first var_dump:
[0]=>
array(3) {
["name"]=>
string(3) "Bob"
["age"]=>
int(8)
["colour"]=>
string(3) "red"
}
[1]=>
array(3) {
["name"]=>
string(4) "Greg"
["age"]=>
int(12)
["colour"]=>
string(4) "blue"
}
[2]=>
array(3) {
["name"]=>
string(4) "Andy"
["age"]=>
int(5)
["colour"]=>
string(6) "purple"
}
}
Output from 2nd var_dump:
array(3) {
[0]=>
array(3) {
["name"]=>
string(4) "Greg"
["age"]=>
int(12)
["colour"]=>
string(4) "blue"
}
[1]=>
array(3) {
["name"]=>
string(3) "Bob"
["age"]=>
int(8)
["colour"]=>
string(3) "red"
}
[2]=>
array(3) {
["name"]=>
string(4) "Andy"
["age"]=>
int(5)
["colour"]=>
string(6) "purple"
}
There's no checking on whether your array keys exist, or the array data you are searching on is actually there, but easy enough to add.