Bonsoir,
J'ai un tableau à 3 dimensions dans lequel je souhaite faire un tri par ordre croissant au cas où les données seraient mal saisies. Après ce tri, je voudrais faire la différence entre la colonne 2 et la colonne 3 afin de mettre en évidence si la ligne3 par exemple de la colonne 2 est supérieure à à la ligne 2 de la colonne 3. Dans les colonnes 2 et 3 on calcule des timestamp.

ce tableau doit se présenter sous un tableau html.

Voici le code imparfait et peut être trop complexe, je pense qur l'on peut faire plus simple. La contrainte est de raisonner sur un tableau multidimensionnel.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
<?php
 
//Les donnees sont sous forme de tableau à 3 dimensions
   $cours[1]=array('dateCours'=>strftime("%d/%m", mktime(14,0,0,04,12,2010)),'debutCours'=>strftime("%Hh", mktime(14,0,0,04,12,2010)), 'finCours'=>strftime("%Hh", mktime(16,0,0,04,12,2010)));
 
   $cours[2]=array('dateCours'=>strftime("%d/%m", mktime(16,0,0,04,13,2010)),'debutCours'=>strftime("%Hh", mktime(16,0,0,04,13,2010)), 'finCours'=>strftime("%Hh", mktime(18,0,0,04,13,2010)));
 
   $cours[3]=array('dateCours'=>strftime("%d/%m", mktime(14,0,0,04,14,2010)), 'debutCours'=>strftime("%Hh", mktime(14,0,0,04,14,2010)), 'finCours'=>strftime("%Hh", mktime(16,0,0,04,14,2010)));
 
   $cours[4]=array('dateCours'=>strftime("%d/%m", mktime(15,0,0,04,14,2010)), 'debutCours'=>strftime("%Hh", mktime(15,0,0,04,14,2010)), 'finCours'=>strftime("%Hh", mktime(17,0,0,04,14,2010)));
 
   $cours[5]=array('dateCours'=>strftime("%d/%m", mktime(14,0,0,04,15,2010)),'debutCours'=>strftime("%Hh", mktime(14,0,0,04,15,2010)), 'finCours'=>strftime("%Hh", mktime(16,0,0,04,15,2010)));
 
   $cours[6]=array('dateCours'=>strftime("%d/%m", mktime(16,0,0,04,15,2010)),'debutCours'=>strftime("%Hh", mktime(16,0,0,04,15,2010)), 'finCours'=>strftime("%Hh", mktime(18,0,0,04,15,2010)));
 
   $cours[7]=array('dateCours'=>strftime("%d/%m", mktime(16,0,0,04,15,2010)),'debutCours'=>strftime("%Hh", mktime(8,0,0,04,16,2010)), 'finCours'=>strftime("%Hh", mktime(12,0,0,04,16,2010)));
 
   $cours[8]=array('dateCours'=>strftime("%d/%m", mktime(9,0,0,04,16,2010)),'debutCours'=>strftime("%Hh", mktime(9,0,0,04,16,2010)), 'finCours'=>strftime("%Hh", mktime(11,0,0,04,16,2010)));
 
   $cours[9]=array('dateCours'=>strftime("%d/%m", mktime(14,0,0,04,16,2010)),'debutCours'=>strftime("%Hh", mktime(14,0,0,04,16,2010)), 'finCours'=>strftime("%Hh", mktime(16,0,0,04,16,2010)));
 
 
 
   function afficher_tableau($cours) 
    {
    // on fait une boucle qui lit les éléments du tableau
    foreach ($cours as $cle=>$valeur) 
        {
        // si l'un des éléments est lui même un tableau
        // alors on applique la fonction à ce tableau
        if(is_array($valeur)) 
            {
            // on affiche le nom de la clé et
            // le début d'une liste pour
            //  décaler le contenu vers la droite
 
            echo "cours N°: $cle".' <ul>'; 
 
            // ici se réalise la récursivité
            // c'est à dire qu'on applique la fonction
            // à l'élément en cours car c'est lui aussi un tableau
            afficher_tableau($valeur); 
 
            // on ferme la liste
            echo '</ul>'; 
            }
 
        // si ce n'est pas un tableau
        // alors on affiche le contenu de l'élément
        else
            {
            echo $cle.' = '.$valeur.' <br>';  
            }
        } 
    } 
 
 
afficher_tableau($cours); 
 
/*
//Nous avons un tableau de lignes mais array_multisort necessite un tableau de colonnes. Le code suivant nous permet d'obtenir une liste de colonnes
   function trierTableau($cours){
      foreach  ($cours as $key => $row) { 
         $debutCours[$key] = $row['debutCours']; 
	     $finCours[$key] = $row['finCours'];  
         } 
   
// Trie les données du tableau debutCours et finCours par ordre croissant
// Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
     for($i=0;$i<sizeof($cours);$i++){// tant que $i est inferieur au nombre d'éléments du tableau... 
     array_multisort($debutCours, SORT_DESC, $finCours, SORT_DESC,$cours);  
	 echo "$debutCours[$key]";
     }
//Formatage du timsetamp en date lisible  
  // $dateCours=strftime("%d/%m",$debutCours[$key]); 	// Formatage jour/mois
  // $heureDebut=strftime("%H h",$debutCours[$key]);		// Formatage heure, sur 23
  // $heureFin=strftime("%H h",$finCours[$key]);	
   
  // echo "cours du : $dateCours, debut du cours :$heureDebut, fin du cours: $heureFin";


*/
 
 
?>
Merci à toutes personnes qui voudra m'aiguiller.

Bonne soirée