(PHP 8 >= 8.6.0)
Time\Duration::compare — Compare deux durées
Compare les durées a et
b, en tenant compte de leur signe.
La valeur de retour peut être utilisée comme résultat d'une fonction de
rappel pour usort().
Le même ordre est utilisé par les opérateurs de comparaison lorsque les deux opérandes sont des objets Time\Duration.
aLa première durée.
bLa seconde durée.
Retourne une valeur inférieure à 0 si
a est plus courte que b, une
valeur supérieure à 0 si a est plus
longue que b, et 0 si les deux
durées sont égales.
Aucune signification particulière ne peut être déduite de façon fiable de la
valeur, hormis son signe.
Les durées négatives sont toujours plus petites que les durées positives.
Exemple #1 Exemple avec Time\Duration::compare()
<?php
$oneSecond = \Time\Duration::fromSeconds(1);
$oneAndAHalfSeconds = \Time\Duration::fromMilliseconds(1500);
$billionNanoseconds = \Time\Duration::fromNanoseconds(1_000_000_000);
var_dump(\Time\Duration::compare($oneSecond, $oneAndAHalfSeconds) < 0);
var_dump(\Time\Duration::compare($oneAndAHalfSeconds, $oneSecond) > 0);
var_dump(\Time\Duration::compare($oneSecond, $billionNanoseconds) === 0);
// Les durées négatives sont plus petites que les durées positives.
var_dump(\Time\Duration::compare($oneSecond->negate(), $oneSecond) < 0);L'exemple ci-dessus va afficher :
bool(true) bool(true) bool(true) bool(true)
Exemple #2 Tri de durées avec Time\Duration::compare()
<?php
$durations = [
\Time\Duration::fromMinutes(2),
\Time\Duration::fromMilliseconds(250),
\Time\Duration::fromSeconds(5),
];
usort($durations, \Time\Duration::compare(...));
foreach ($durations as $duration) {
printf("%d.%09d\n", $duration->seconds, $duration->nanoseconds);
}L'exemple ci-dessus va afficher :
0.250000000 5.000000000 120.000000000