L2 Info : PHP et Programmation Web
 
◃  Ch. 1 Le language PHP  ▹
 

Opérateurs de comparaison

OpérateurNom
==égal
!=différent
<>
<inférieur
<=inférieur ou égal
>supérieur
>=supérieur ou égal
===identique (valeur et type)
!==différent
<=>combiné (spaceship)
  • PHP opère des opérations de transtypages (cast) de façon transparente et pas forcément souhaitée.
  • Exemple :
    $int3 = 3; // variable associée à une valeur de type entier
    $str3 = '3'; // variable associée à une valeur de type string
    echo "<h3>évaluation de l'expression ($int3 == $str3)</h3>";
    if ($int3 == $str3) {
        echo "<p>Le test a réussi car PHP a automatiquement transformé le type
        d'une des deux variables !</p>";
    }
    echo "<h3>évaluation de l'expression ($int3 != $str3)</h3>";
    if ($int3 != $str3) {
        echo "<p>C'est l'effet inverse, le test échoue à cause du transtypage
        automatique réalisé par PHP.</p>";
    }
    else {
        echo "<p>Le test ($int3 != $str3) a échoué !</p>";
    }
    Résultat :

    évaluation de l'expression ($int3 == $str3)

    Le test a réussi car PHP a automatiquement transformé le type d'une des deux variables !

    évaluation de l'expression ($int3 != $str3)

    Le test ($int3 != $str3) a échoué !

  • Les opérateurs === et !== permettent d'éviter les conversions de types indésirables.
  • Exemple :
    echo "<h3>évaluation de l'expression ($str3 === $int3)</h3>";
    if ($str3 === $int3) {
        echo "<p>Ce test ne réussira pas car les deux valeurs ne sont pas du même type.</p>";
    }
    else {
        echo "<p>Le test ($str3 === $int3) a échoué car les variables comparées
          n'ont pas le même type</p>";
    }
        echo "<h3>évaluation de l'expression ($str3 !== $int3)</h3>";
    if ($str3 !== $int3) {
        echo "<p>Le test réussit, un entier et une chaîne sont différents</p>";
    }
    Résultat :

    évaluation de l'expression ($str3 === $int3)

    Le test ($str3 === $int3) a échoué car les variables comparées n'ont pas le même type

    évaluation de l'expression ($str3 !== $int3)

    Le test réussit, un entier et une chaîne sont différents

  • L'opérateur combiné <=> retourne un entier positif, nul ou négatif dont le signe correspond à celui de la différence des deux termes :
    $var = 10<=>2; // $var vaut 1
    $var = 2<=>10; // $var vaut -1
    $var = 2<=>"2"; // $var vaut 0