Bonsoir
En écrivant un script pour trouver des solutions de mots avec des lettres mélangées, j'ai trouvé une astuce pour se passer de test afin d'ajouter ou pas un "s" suivant un nombre :
function faireAccord($mot, $nombre, $zero=, $un=, $plusDeUn='s') {
$valeurs = array($zero, $un, $plusDeUn);
return $mot.$valeurs[ max(0, min(2, $nombre)) ];
}
echo faireAccord('mot ', 0, '0', '1', 'sup 1')."\n";
echo faireAccord('mot ', 1, '0', '1', 'sup 1')."\n";
echo faireAccord('mot ', 2, '0', '1', 'sup 1')."\n";
Donne :
mot 0
mot 1
mot sup 1
Comment ça fonctionne ?
min(2, $nombre) :
si($nombre < 2) alors retourne $nombre
sinon retourne 2;
max(0, $valeur) :
si($valeur > 0) alors retourne $valeur
sinon retourne 0;
max et min combiné permettent de sortir soit 0, 1, ou 2 (qui sont les index de $valeurs) - dans l'hypothèse ou $nombre est un nombre entier.
C'est con, mais ça évitera à ceux qui liront ça se s'embêter avec un if et un else ^^
++