Comment trier en php un tableau multidimensionnel ?
5 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Comment trier en php un tableau multidimensionnel ?
Bonjour tout le monde,
Le débutant php que je suis a une question à poser sur les tris d'un tableau à plusieurs dimensions.
Prenons un exemple :
Voici un tableau indiquant pour 4 classes scolaires le nombre d'éléves et de professeurs :
- $ecole['classe']['0']['eleve']='10';
- $ecole['classe']['1']['eleve']='20';
- $ecole['classe']['2']['eleve']='3';
- $ecole['classe']['3']['eleve']='1';
- $ecole['classe']['0']['professeur']='2';
- $ecole['classe']['1']['professeur']='3';
- $ecole['classe']['2']['professeur']='1';
- $ecole['classe']['3']['professeur']='1';
Pour créer une boucle toute simple affichant le nombre d'éleves et de professeurs par classe, il suffit d'afficher $ecole['classe'][$i]['eleve'] et $ecole['classe'][$i]['professeur'] pour $i variant de 0 à 3.
PHP m'affichera dans l'ordre 10 élèves et 2 professeurs dans la classe 0 etc...
Simple et logique.
J'aimerais maintenant que PHP m'affiche les classes en les triant par nombre d'élèves :
1 élève et 1 professeur dans la classe 0 (qui était initialement la classe 3)
3 élèves et 1 professeur dans la classe 1 (qui était initialement la classe 2)
etc...
Voyez-vous une façon simple à comprendre à rapide à exécuter (pour PHP) ?
Merci pour votre aide !
Le débutant php que je suis a une question à poser sur les tris d'un tableau à plusieurs dimensions.
Prenons un exemple :
Voici un tableau indiquant pour 4 classes scolaires le nombre d'éléves et de professeurs :
- $ecole['classe']['0']['eleve']='10';
- $ecole['classe']['1']['eleve']='20';
- $ecole['classe']['2']['eleve']='3';
- $ecole['classe']['3']['eleve']='1';
- $ecole['classe']['0']['professeur']='2';
- $ecole['classe']['1']['professeur']='3';
- $ecole['classe']['2']['professeur']='1';
- $ecole['classe']['3']['professeur']='1';
Pour créer une boucle toute simple affichant le nombre d'éleves et de professeurs par classe, il suffit d'afficher $ecole['classe'][$i]['eleve'] et $ecole['classe'][$i]['professeur'] pour $i variant de 0 à 3.
PHP m'affichera dans l'ordre 10 élèves et 2 professeurs dans la classe 0 etc...
Simple et logique.
J'aimerais maintenant que PHP m'affiche les classes en les triant par nombre d'élèves :
1 élève et 1 professeur dans la classe 0 (qui était initialement la classe 3)
3 élèves et 1 professeur dans la classe 1 (qui était initialement la classe 2)
etc...
Voyez-vous une façon simple à comprendre à rapide à exécuter (pour PHP) ?
Merci pour votre aide !
- Selection A
- WRInaute impliqué

- Messages: 255
- Inscription: Lun Mar 14, 2005 11:20
Un conseil : procure toi une doc assez simple des grandes fonctions PHP! c trouvable facilement sur le web.
fonction PHP à utiliser pour trier un tableau : sort() ou rsort() ou ksort() ou krsort() selon tes besoins
fonction PHP à utiliser pour trier un tableau : sort() ou rsort() ou ksort() ou krsort() selon tes besoins
Merci pour le conseil Selection A !
Je me suis un peu informé sur ces fonctions et à moins que je n'ai pas tout compris, je pnese qu'en l'état, elles ne répondent pas directement à mes besoins...
Y a sans doute une façon d'arriver au résultat en "développant" une routine qui emploie ces fonctions... Mais je me demande s'il n'existe pas d'autres fonctions qui feraient tout, ou quasisment, "nativement".
C'est ce type de fonctions que je recherche en fait...
Je me suis un peu informé sur ces fonctions et à moins que je n'ai pas tout compris, je pnese qu'en l'état, elles ne répondent pas directement à mes besoins...
Y a sans doute une façon d'arriver au résultat en "développant" une routine qui emploie ces fonctions... Mais je me demande s'il n'existe pas d'autres fonctions qui feraient tout, ou quasisment, "nativement".
C'est ce type de fonctions que je recherche en fait...
nza2k a écrit:- $ecole['classe']['0']['eleve']='10';
- $ecole['classe']['1']['eleve']='20';
- $ecole['classe']['2']['eleve']='3';
- $ecole['classe']['3']['eleve']='1';
- $ecole['classe']['0']['professeur']='2';
- $ecole['classe']['1']['professeur']='3';
- $ecole['classe']['2']['professeur']='1';
- $ecole['classe']['3']['professeur']='1';
J'aimerais maintenant que PHP m'affiche les classes en les triant par nombre d'élèves :
1 élève et 1 professeur dans la classe 0 (qui était initialement la classe 3)
3 élèves et 1 professeur dans la classe 1 (qui était initialement la classe 2)
etc...
Salut, voici ce que je ferais :
- Code: Tout sélectionner
<?
$ecole['classe']['0']['eleve'] = '10';
$ecole['classe']['1']['eleve'] = '20';
$ecole['classe']['2']['eleve'] = '3';
$ecole['classe']['3']['eleve'] = '1';
$ecole['classe']['0']['professeur'] = '2';
$ecole['classe']['1']['professeur'] = '3';
$ecole['classe']['2']['professeur'] = '1';
$ecole['classe']['3']['professeur'] = '1';
$dernier_index = count($ecole['classe']) - 1;
for( $i=0; $i<=$dernier_index; $i++ )
{
$eleves[] = $ecole['classe']["$i"]['eleve'];
$professeurs[] = $ecole['classe']["$i"]['professeur'];
};
sort( $eleves );
sort( $professeurs );
for( $i=0; $i<=$dernier_index; $i++ )
{
$ecole['classe']["$i"]['eleve'] = $eleves["$i"];
$ecole['classe']["$i"]['professeur'] = $professeurs["$i"];
};
print_r($ecole);
/********** TABLEAU OBTENU **********
Array
(
[classe] => Array
(
[0] => Array
(
[eleve] => 1
[professeur] => 1
)
[1] => Array
(
[eleve] => 3
[professeur] => 1
)
[2] => Array
(
[eleve] => 10
[professeur] => 2
)
[3] => Array
(
[eleve] => 20
[professeur] => 3
)
)
)
*/
?>
Il y a peut-être plus simple mais cette solution est fonctionnelle
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum