3 votes

Trier un tableau contenant des dates par ordre de jours comme dimanche, lundi, etc. en php.

J'ai un tableau avec 7 dates.

$dates = array(
'2018-03-07', //Wednesday
'2018-03-08', //Thursday
'2018-03-09', //Friday
'2018-03-10', //Saturday
'2018-03-11', //Sunday
'2018-03-12', //Monday
'2018-03-13', //Tuesday
);

Je veux trier le tableau ci-dessus par jour (du dimanche au samedi).

Le résultat attendu est,

 $dates = array(
'2018-03-11', //Sunday
'2018-03-12', //Monday
'2018-03-13', //Tuesday
'2018-03-07', //Wednesday
'2018-03-08', //Thursday
'2018-03-09', //Friday
'2018-03-10', //Saturday
);

Comment trier comme ça ? Aidez-moi, s'il vous plaît.

4voto

Syscall Points 14338

Vous pourriez utiliser usort() y date('w') pour trier votre tableau en utilisant la fonction "Représentation numérique du jour de la semaine"

$dates = array(
'2018-03-07', //Wednesday
'2018-03-08', //Thursday
'2018-03-09', //Friday
'2018-03-10', //Saturday
'2018-03-11', //Sunday
'2018-03-12', //Monday
'2018-03-13', //Tuesday
);

usort($dates, function($a, $b) {
    return date('w',strtotime($a)) - date('w',strtotime($b)) ;
});

print_r($dates);

Sorties :

Array
(
    [0] => 2018-03-11
    [1] => 2018-03-12
    [2] => 2018-03-13
    [3] => 2018-03-07
    [4] => 2018-03-08
    [5] => 2018-03-09
    [6] => 2018-03-10
)

date('w') retours : 0 (pour le dimanche) à 6 (pour le samedi).

0voto

stetoc Points 757
usort(array, function($a, $b){
    $dayA = date('w', strtotime($a));
    $dayB = date('w', strtotime($b));

    return $dayA < $dayB ? 1 : $dayA === $dayB ? 0 : -1;
});

cela devrait fonctionner comme vous l'avez demandé

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X