Time\Duration::compare

(PHP 8 >= 8.6.0)

Time\Duration::compare — Compare deux durées

Description

public static function Time\Duration::compare(Time\Duration $a, Time\Duration $b): int

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.

Liste de paramètres

a

La première durée.

b

La seconde durée.

Valeurs de retour

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.

Exemples

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

Voir aussi

+add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top