[RESOLU] Trier un tableau ( 2 dimensions) en fonction de la ligne puis de la colonne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Trier un tableau ( 2 dimensions) en fonction de la ligne puis de la colonne

Re: Trier un tableau ( 2 dimensions) en fonction de la ligne puis de la colonne

par Billygbk » 11 avr. 2019, 14:22

Parfait, c'est exactement ce que je cherchais =D> =D>

Merci à toi et bon courage pour la suite :)

Re: Trier un tableau ( 2 dimensions) en fonction de la ligne puis de la colonne

par Spols » 11 avr. 2019, 13:39

voici ce que je ferai
<?php
$tableau["Toto"] = [];
$tableau["Julien"] = [];
$tableau["Renaud"] = [];
$tableau["Dimitri"] = [];
$tableau["Maciej"] = [];
$tableau["Martine"] = [];

foreach ($tableau as $eleve => $notes)
{

for ($z=1 ; $z <= 9; $z++ )
{

$tableau[$eleve][$z]= rand(0, 20);

} 
sort($tableau[$eleve]);
}
ksort($tableau);

var_dump($tableau);
en premier lieu, placer le nom de l'élève en clé, plus pratique pour ne pas confondre les notes mais contraignant car 21 élèves ne peuvent pas avoir le même noms

ensuite juste après la génération de toutes les notes d'un élève je les classe
je fini par classer le tableau par les clés.

Trier un tableau ( 2 dimensions) en fonction de la ligne puis de la colonne

par Billygbk » 11 avr. 2019, 11:12

Bonjour à tous,

Je suis nouveau sur le site et débutant en PHP, je vous remercie par avance pour votre aide.

Donc voila, j'ai programmé un tableau à deux dimensions, 6 lignes et 10 colonnes avec dans une ligne ( le nom d’élève suivi de 9 notes aléatoires ) .

Dans la première colonne j'ai mis le nom des élèves avec ce code :

$tableau[][]="Toto";
$tableau[][ ]="Julien";
$tableau[][]="Renaud";
$tableau[][]="Dimitri";
$tableau[][]="Maciej";
$tableau[][]="Martine";

Ensuite pour chaque élèves je donne 9 notes aléatoires avec ce code :

for ($i=0 ; $i <= 5; $i++ )
{

for ($z=1 ; $z <= 9; $z++ )
{

$tableau[$i][$z]= rand(0, 20);

}
}



Voila ce qui s'affiche :

toto 13 14 2 14 5 10 18 10 4
julien 6 17 20 11 15 8 14 17 10
renaud 16 3 19 20 1 18 6 7 1
dimitri 20 15 3 10 2 13 14 20 14
maciej 13 3 6 4 20 13 9 6 12
martine 11 19 10 5 13 12 5 6 4


Par la suite je trie mon tableau en utilisant ce code : array_multisort( $tableau ) et voila ce qui s'affiche ;

dimitri 19 10 9 10 10 16 8 20 3
julien 13 19 17 15 6 3 20 17 1
maciej 18 13 17 11 10 12 13 12 14
martine 4 3 4 1 0 14 0 18 7
renaud 18 9 17 13 12 20 20 12 13
toto 4 6 15 0 7 3 5 13 20

J'ai donc bien un tri en fonction de ma première colonne mais je souhaiterais également que pour chaque élève, les notes soient triés par ordre croissant, j'ai beau cherché sur le net impossible de trouver quelque chose de concret, j'ai essayé usort , sort , arsort , ksort , une continuité de foreach et un tas d'autres choses mais impossible d'obtenir le tri par colonne et ensuite par ligne.

Merci à vous et bon courage