Page 1 sur 1

Tri d'un tableau dans un tableau ?...

Posté : 07 juin 2012, 12:40
par JulieDev
Bonjour,
j'aurais besoin de votre aide pour un tri de tableau dans un tableau.
Effectivement j'ai le tableau ci-dessous (visualisation via un print_r) :
Array
(
    [2012-05-02] => Array
        (
            [12:00:00] => 1578
            [13:00:00] => 943
            [14:00:00] => 866
            [15:00:00] => 1828
            [16:00:00] => 1443
            [17:00:00] => 1712
            [09:00:00] => 231
            [10:00:00] => 616
            [11:00:00] => 1155
        )

    [2012-05-03] => Array
        (
            [10:00:00] => 1693
            [11:00:00] => 1751
            [12:00:00] => 1674
            [13:00:00] => 1443
            [14:00:00] => 1116
            [15:00:00] => 1674
            [16:00:00] => 1424
            [17:00:00] => 1097
        )

)
Ce que je voudrais c'est isoler la valeur la plus haute pour chaque date, en triant le tableau par ordre décroissant et prendre la première ligne.
J'ai essayé un foreach ($tableau as $element) et fait un rsort() sur $element mais le problème c'est que je perds la notion de date..
Quand à la fonction rsort() directement sur le tableau, elle me donne ceci :
Array
(
    [0] => Array
        (
            [12:00:00] => 1578
            [13:00:00] => 943
            [14:00:00] => 866
            [15:00:00] => 1828
            [16:00:00] => 1443
            [17:00:00] => 1712
            [09:00:00] => 231
            [10:00:00] => 616
            [11:00:00] => 1155
        )

    [1] => Array
        (
            [12:00:00] => 500
            [13:00:00] => 250
            [14:00:00] => 250
            [15:00:00] => 750
            [16:00:00] => 750
            [17:00:00] => 1250
            [09:00:00] => 231
            [10:00:00] => 616
            [11:00:00] => 1155
        )

    [2] => Array
        (
            [10:00:00] => 1693
            [11:00:00] => 1751
            [12:00:00] => 1674
            [13:00:00] => 1443
            [14:00:00] => 1116
            [15:00:00] => 1674
            [16:00:00] => 1424
            [17:00:00] => 1097
        )

    [3] => Array
        (
            [10:00:00] => 1000
            [11:00:00] => 750
            [12:00:00] => 750
            [13:00:00] => 750
            [14:00:00] => 500
            [15:00:00] => 750
            [16:00:00] => 500
            [17:00:00] => 250
        )

    [4] => Array
        (
            [10:00:00] => 1000
            [11:00:00] => 750
            [12:00:00] => 750
            [13:00:00] => 750
            [14:00:00] => 500
            [15:00:00] => 750
            [16:00:00] => 500
            [17:00:00] => 250
        )

    [5] => Array
        (
            [12:00:00] => 500
            [13:00:00] => 250
            [14:00:00] => 250
            [15:00:00] => 750
            [16:00:00] => 750
            [17:00:00] => 1250
        )

    [6] => Array
        (
            [12:00:00] => 500
            [13:00:00] => 250
            [14:00:00] => 250
            [15:00:00] => 750
            [16:00:00] => 750
            [17:00:00] => 1250
        )

)
arsort() ne fonctionne pas mieux...
Connaissez-vous d'autres fonctions pour ce genre de tableau ?
Merci

Re: Tri d'un tableau dans un tableau ?...

Posté : 07 juin 2012, 12:53
par xTG
Ceci te conviendrait-il ?
$result = array();
foreach($datesHeures as $date => $heures){
  $result[] = max($heures);
}
var_dump($result);

Re: Tri d'un tableau dans un tableau ?...

Posté : 07 juin 2012, 13:59
par JulieDev
Merci j'essaie tout de suite !

Re: Tri d'un tableau dans un tableau ?...

Posté : 07 juin 2012, 14:20
par JulieDev
C'est super encore merci !
J'ai un peu adapté mon code car j'avais un format de date particulier mais ça fonctionne :
         $result = array();
                foreach($sommeLic as $dates => $heures){
                $datesExplode=explode('-', $dates);
                $dates = $datesExplode[2].'/'.$datesExplode[1].'/'.$datesExplode[0];
                $result[$dates] = max($heures);
                if ($dates==$dt->format("d/m/Y")){
                    $data_max_cumul[$dt->format("d/m/Y")]=$result[$dates];
                }
}