Merci pour l'explication
On va le faire en bon français, c'est + simple :
Ton if() a pour but d'isoler les cas d'erreur du script. Ton script n'accepte donc que des images de ratio 4/3 ou 3/4 uniquement (deux cas OK, tous les autres cas PAS OK).
Les cas d'erreur sont donc déterminés par la règle contraire, cad :
Code : Tout sélectionner
si le ratio de l'image est différent de 3/4 ET que le ratio est différent de 4/3.
Qu'on aurait pu exprimer autrement :
Code : Tout sélectionner
si (le contraire de tout ce qui suit) (le ratio de l'image est égal à 3/4 OU que le ratio est égal à 4/3).
stealth35 avait aussi raison dans l'aide qu'il t'a apportée au départ.
En php comme dans plein de langages de programmation, il est délicat de tester l'égalité d'un nombre à virgule (cela tient à la représentation interne que ton ordinateur fait des nombres à virgule, qui peut être une approximation et non une valeur exacte, ce qui peut faire échouer ton test et te laisser dubitatif). Ce qui fait qu'il faut préférer l'écriture == (4/3) à == 0.6666666666 car tu ne maîtrises pas la représentation interne que php se fait de ce nombre, il vaut donc mieux le laisser le calculer lui-même.
Pour un test encore plus fiable on peut même choisir l'opérateur === (égalité renforcée par contrôle du type, ou égalité stricte) plutôt que ==.
Ce qui nous amène aux équivalents php suivants, choisis celui que tu préfères :
// Ecriture 1
if( $ratio !== (4/3) && $ratio !== (4/3) ) {
echo "erreur !";
}
// Ecriture 2
if(!( $ratio === (4/3) || $ratio === (3/4) )) {
echo "erreur !";
}