Pour faire vraiment optimisé, il faudrait voir si $annee%4 === 0 renvoit plus souvent FALSE que $annee%400 !== 0.
Car si c'est $annee%400 !== 0 qui fait plus souvent FALSE, il faut la placer en première dans l'instruction. Un FALSE dans un ET renvoit toujours FALSE et les instructions qui suivent ne sont pas exécuté du tout.
D'où un petit gain en performance :p
(jme change en Antho ^^)
(Source Wikipédia)
Depuis l'instauration du calendrier grégorien, sont bissextiles :
1. les années divisibles par 4 mais non divisibles par 100
2. les années divisibles par 400
$annee = 2002;
if (EstBissextile($annee)) {
echo $annee.' est bissextile.';
}else{
echo $annee.' n\'est pas bissextile.';
}
?>
Les années divisibles par 4 sont bissextiles, pas les autres.
Exception : les années divisibles par 100 ne sont pas bissextiles.
Exception à l'exception (!) : les années divisibles par 400 sont bissextiles.
5 mars 2007 à 21:28
function EstBissextile($annee) {
return ( (int) $annee%4 === 0 OR $annee%400 !== 0 );
}
26 févr. 2007 à 17:19
Car si c'est $annee%400 !== 0 qui fait plus souvent FALSE, il faut la placer en première dans l'instruction. Un FALSE dans un ET renvoit toujours FALSE et les instructions qui suivent ne sont pas exécuté du tout.
D'où un petit gain en performance :p
(jme change en Antho ^^)
26 févr. 2007 à 17:16
Quel boulet ^^
Pour faire vraiment épuré, ca donnerait un truc dans le genre :
function EstBissextile($annee) {
return ( (int) $annee%4 === 0 && $annee%400 !== 0 );
}
7 lignes en 1 seule :)
C'est beau la prog par moment ^^
26 févr. 2007 à 16:57
return ( $annee%4 == 0 && $annee%400 != 0 ) ? TRUE : FALSE;
}
Rooooooo... FhX voyons... .. .
function EstBissextile($annee)
{
return (($annee%4) === 0 && ($annee%400) !== 0);
}
@ tchaOo°
ps : perso je rajouretais un cast au début de la fonction... .. .
25 févr. 2007 à 19:35